58
44

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

.indexOf()で配列のindexが取得できないとき

Last updated at Posted at 2017-03-03

indexOf()でindexが取得できない

var array = ['hoge', 'huga', 'hoho'];

のような単純な配列は.indexOf()で簡単に取得できますが

var hash = [
  {number: 1, name: 'hoge'},
  {number: 2, name: 'huga'}
];

のような連想配列(ハッシュ)では、例えば「nameが'huga'である要素のindex」は取得できません。

解決方法

reactjs - Finding the array index of an object with Javascript/React.js - Stack Overflowを参考にしました。
日本語で書いておきましたがほぼ同じ内容です。
reactのコードの書き方での説明ですが難しくないです。

連想配列で「nameが'huga'である要素のindex」を取得したいときはまず

function getIndex(value, arr, prop) {
    for(var i = 0; i < arr.length; i++) {
        if(arr[i][prop] === value) {
            return i;
        }
    }
    return -1; //値が存在しなかったとき
}

という、for文で繰り返し処理をする関数をつくって

var index = getIndex('huga', hash, 'name');

とすると、目的のindexを取得することができます。

追記

2017/3/11
@ygknさんからコメントをいただきました。
array.findIndex()を使うと簡単にindexが取得できるそうです!
ありがとうございます!

var index = hash.findIndex(({name}) => name === 'huga');
58
44
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
58
44

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?