JavaScript: Best way to find if a value is inside an object in an array
本问题已经有最佳答案,请猛点这里访问。
Possible Duplicate:
Find object by id in an array of JavaScript objects
How to check if value exists in this JavaScript array?
例如:
1 2 3 4 5 6 7 | 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?? |
只需循环遍历数组并检查颜色值:
1 2 3 4 5 | for(var i = 0 ; i < arr.length -1 ; i++){ if(arr[i].color == 'red'){ alert(i); } } |
当然,您可以将其包装在辅助函数中,如下所示:
1 2 3 4 5 6 7 | function colourIndex(colour){ for(var i = 0 ; i < arr.length -1 ; i++){ if(arr[i].color == colour){ return i; } } } |
您必须迭代数组,搜索蓝色对象。 如果你得到它你就有你的索引。
1 2 3 4 5 6 7 | var index = 0; for(; index<arr.length; index++) { if(arr[index].color == 'blue') { break; } } alert(index) |
1 2 3 4 5 6 7 8 9 10 11 12 13 | 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'); } |
您可能希望创建更通用的解决方案,而不是在整个地方复制代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 | 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"; } |
非常糟糕的方法:
1 2 | var ind = -1 $(arr).each(function(index, val){if (val.color=='blue'){ind=index;return false;}}); |
一种更好的方法是创建另一个可搜索的价值地图及其索引,或类似的东西。