获取数组内对象的索引

415 阅读1分钟

问题

我有这样一个数组:

[{prop1:"abc",prop2:"qwe"},{prop1:"bnmb",prop2:"yutu"},{prop1:"zxvz",prop2:"qwrq"},...]

如何在不迭代整个数组的情况下获取与条件匹配的对象的索引?

例如,给定prop2=="yutu",我想获得索引1。

我看到.indexOf()但是认为它用于简单的数组["a1","a2",...]。我也检查了$.grep()但这会返回对象,而不是索引。

解决

截至2016年,您应该使用Array.findIndex(ES2015 / ES6标准):

a = [
  {prop1:"abc",prop2:"qwe"},
  {prop1:"bnmb",prop2:"yutu"},
  {prop1:"zxvz",prop2:"qwrq"}
];
index = a.findIndex(x => x.prop2 ==="yutu");
console.log(index);

谷歌Chrome,Firefox和Edge支持它。对于Internet Explorer,链接页面上有一个polyfill。

因此对于非常大的数组,简单的循环将比以下方式执行得更好findIndex:

来自:哆啦的时光机www.imooc.com/wenda/detai…