可能重复:
Find object by id in an array of JavaScript objects
How to check if value exists in this JavaScript array?
例如:
var arr = [
{id: 1, color: 'blue'},
{id: 2, color: 'red'},
{id: 3, color: 'yellow'}
];
alert( indexOf('blue') ); // How can I get the index of blue??
答案 0 :(得分:5)
只需循环遍历数组并检查颜色值:
for(var i = 0 ; i < arr.length -1 ; i++){
if(arr[i].color == 'red'){
alert(i);
}
}
当然,您可以将其包装在辅助函数中,如下所示:
function colourIndex(colour){
for(var i = 0 ; i < arr.length -1 ; i++){
if(arr[i].color == colour){
return i;
}
}
}
答案 1 :(得分:3)
found_flag = false;
for (i = 0; i < arr.length; i++) {
if (arr[i].color == 'blue') {
found_flag = true;
break;
}
}
if (found_flag === true)
{
alert(i);
} else {
alert('not found');
}
答案 2 :(得分:3)
您必须迭代数组,搜索蓝色对象。如果你得到它你就有你的索引。
var index = 0;
for(; index<arr.length; index++) {
if(arr[index].color == 'blue') {
break;
}
}
alert(index)
答案 3 :(得分:2)
您可能希望创建更通用的解决方案,而不是在整个地方复制代码
Array.prototype.indexOf = (function() {
var old = Array.prototype.indexOf ||
function(v) {
var i, l = this.length;
for (i = 0; i < l; ++i) {
if (this[i] === v) {
return i;
}
}
return -1;
};
return function(v) {
var i, l;
if (typeof v != "function") {
return old.call( this, v );
}
l = this.length;
for( i = 0; i < l; ++i ) {
if (v.call( this, this[i])) {
return i;
}
}
return -1;
}
})();
arr.indexOf( function(v){return v.color == "blue";} ); //0
arr.indexOf( function(v){return v.images[0].imageData == "xxx"; }
答案 4 :(得分:1)
非常糟糕的方法:
var ind = -1
$(arr).each(function(index, val){if (val.color=='blue'){ind=index;return false;}});
更好的方法是创建另一个可搜索的价值地图及其索引,或类似的东西。