我需要在一个数组中获取json对象的索引,该数组的对象是id
这是示例代码
var list = [ { _id: '4dd822c5e8a6c42aa70000ad',
metadata:
{ album: 'American IV: Man Comes Around',
song: 'Hurt',
coverart: 'http://images.mndigital.com/albums/044/585/435/m.jpeg',
artist: 'Johnny Cash',
length: 216,
mnid: '44585439' } },
{ _id: '4dd80b16e8a6c428a900007d',
metadata:
{ album: 'OK Computer (Collector\'s Edition)',
song: 'Paranoid Android',
coverart: 'http://images.mndigital.com/albums/026/832/735/m.jpeg',
artist: 'Radiohead',
length: 383,
mnid: '26832739' } },
{ _id: '4dd68694e8a6c42c80000479',
metadata:
{ album: 'The Presidents Of The United States Of America: Ten Year Super Bonus Special Anniversary Edition',
song: 'Lump',
coverart: 'http://images.mndigital.com/albums/011/698/433/m.jpeg',
artist: 'The Presidents Of The United States Of America',
length: 134,
mnid: '11698479' } }
]
Run Code Online (Sandbox Code Playgroud)
那么伪代码
var index_of = list.indexOf("4dd80b16e8a6c428a900007d");
Run Code Online (Sandbox Code Playgroud)
显然这不起作用,但我想知道是否有没有循环找到索引这样做?
小智 10
var i = list.length;
while( i-- ) {
if( list[i]._id === '4dd80b16e8a6c428a900007d' ) break;
}
alert(i); // will be -1 if no match was found
Run Code Online (Sandbox Code Playgroud)
您可以尝试Array.prototype.map,根据您的示例,它将是:
var index = list.map(function(e) { return e._id; }).indexOf('4dd822c5e8a6c42aa70000ad');
Run Code Online (Sandbox Code Playgroud)
Array.prototype.map在IE7或IE8上不可用.ES5兼容性