根据数组的属性获取数组元素的索引

Rob*_*rsz 27 javascript arrays object

我有一个像这样的JavaScript对象数组:

var myArray = [{...}, {...}, {...}];
Run Code Online (Sandbox Code Playgroud)

每个对象id在其他属性中都是唯一的:

{ 
  id: 4,
  property1: 'something',
  property2: 'something'
}
Run Code Online (Sandbox Code Playgroud)

如果我只知道它的id属性,我如何获得该数组中特定对象的索引?所以,如果我知道,myArray[x].id == 4我怎么能找到x

xda*_*azz 61

var index = myArray.map(function(el) {
  return el.id;
}).indexOf(4);
Run Code Online (Sandbox Code Playgroud)

对于低于版本9的IE,map需要一个补丁,或者只是使用一个循环.

  • 这看起来最好,很好.甚至都没想到 (2认同)

Dmi*_*dov 17

或者使用ES6语法:

let index = myArray.map( el => el.id ).indexOf(4)
Run Code Online (Sandbox Code Playgroud)

要么

let index = myArray.findIndex( el => el.id === 4 )
Run Code Online (Sandbox Code Playgroud)


Den*_*ret 7

为什么不简单地做一个循环?

function indexOfId(array, id) {
    for (var i=0; i<array.length; i++) {
       if (array[i].id==id) return i;
    }
    return -1;
}
Run Code Online (Sandbox Code Playgroud)

js(或js库)中有许多工具的事实并不意味着你有时不能写一个循环.那是快速而简单的.

  • 也许你应该使用`indexOf`以外的东西 (2认同)