对象数组上的 JavaScript indexOf
2011-11-29
88648
如果我有一个像这样的数组:
var myArray = [
{
'color':'red',
'name': 'redName'
},
{
'color':'blue',
'name': 'blueName'
},
{
'color':'green',
'name': 'greenName'
},
{
'color':'yellow',
'name': 'yellowName'
},
];
我如何获取“蓝色”的索引?
3个回答
如果您已经在代码中使用 ECMAScript 5,则可以使用它:
myArray
.map(function (element) {return element.color;})
.indexOf('blue');
请注意,对这些函数的支持非常有限(它们在 Internet Explorer 8 上不起作用)。
此外,如果您将来使用 ES6,您可以这样做:
myArray.map((el) => el.color).indexOf('blue');
这与上面的相同,但更小。
Gustavo Rodrigues
2013-06-18
for(var i = 0; i < myArray.length; i++) {
if(myArray[i].color === 'blue') {
return i;
}
}
除非您想使用第三方库,否则没有“干净”的方法。 Underscore 是处理此类问题的一个好方法。
John Strickler
2011-11-29
我知道这很老了,但是 Javascript es6 有一个很棒的方法 Array.prototype.findIndex() ,所以你可以这样做:
let index = myArray.findIndex((item) => item.color === 'blue');
// value of index will be "1"
Aleksandr Strutynskyy
2016-07-19