开发者问题收集

对象数组上的 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