1. ホーム
  2. ジャバスクリプト

[解決済み】JavaScriptでオブジェクトのプロパティを使用してインデックスを取得するにはどうすればよいですか?

2022-03-28 18:04:22

質問

例えば、ある。

var Data = [
  { id_list: 1, name: 'Nick', token: '312312' },
  { id_list: 2, name: 'John', token: '123123' },
]

次に ソート/リバース このオブジェクトを name といった具合に。そして、このようなものを得たいのです。

var Data = [
  { id_list: 2, name: 'John', token: '123123' },
  { id_list: 1, name: 'Nick', token: '312312' },
]

そして今度は、オブジェクトのインデックスを、プロパティ name='John' を使用して、プロパティ・トークンの値を取得します。

どうすれば問題を解決できますか?

どのように解決するのですか?

他の回答が示唆するように、配列をループするのがおそらく最良の方法でしょう。しかし、私ならそれを独自の関数に入れ、もう少し抽象的なものにします。

function findWithAttr(array, attr, value) {
    for(var i = 0; i < array.length; i += 1) {
        if(array[i][attr] === value) {
            return i;
        }
    }
    return -1;
}

var Data = [
    {id_list: 2, name: 'John', token: '123123'},
    {id_list: 1, name: 'Nick', token: '312312'}
];

これで、どれが「John」を含むかだけでなく、どれが「312312」というトークンを含むかを見つけることができる。

findWithAttr(Data, 'name', 'John'); // returns 0
findWithAttr(Data, 'token', '312312'); // returns 1
findWithAttr(Data, 'id_list', '10'); // returns -1

この関数は,見つからなければ -1 を返すので,次のような構成になっています. Array.prototype.indexOf() .