[英]Finding index of value in two dimensional array of objects in javascript
我有一个二维对象数组,如下所示:
[[{id: 123}, {id: 456}, {id: 789}], [{id: 111}, {id: 222}, {id: 333}], [{id: 444}, {id: 555}, {id: 666}], [{id: 777}]]
我需要在顶级数组级别找到id的索引。
因此,如果我要搜索值为'222'的id属性,则我希望返回的索引为1。
我尝试了以下方法:
var arr = [[{id: 123}, {id: 456}, {id: 789}], [{id: 111}, {id: 222}, {id: 333}], [{id: 444}, {id: 555}, {id: 666}], [{id: 777}]],
len = arr.length
ID = 789;
for (var i = 0; i < len; i++){
for (var j = 0; j < arr[i].length; j++){
for (var key in o) {
if (key === 'id') {
if (o[key] == ID) {
// get index value
}
}
}
}
}
将代码包装在函数中,用return i
替换注释,通过返回前哨值(例如-1)来降低注释:
function indexOfRowContainingId(id, matrix) {
for (var i=0, len=matrix.length; i<len; i++) {
for (var j=0, len2=matrix[i].length; j<len2; j++) {
if (matrix[i][j].id === id) { return i; }
}
}
return -1;
}
// ...
indexOfRowContainingId(222, arr); // => 1
indexOfRowContainingId('bogus', arr); // => -1
因为您知道需要id
,所以不需要for-in
循环。
打破外部循环, i
将成为您的价值。
var arr = [[{id: 123}, {id: 456}, {id: 789}], [{id: 111}, {id: 222}, {id: 333}], [{id: 444}, {id: 555}, {id: 666}], [{id: 777}]],
len = arr.length
ID = 789;
OUTER: for (var i = 0; i < len; i++){
for (var j = 0; j < arr[i].length; j++){
if (arr[i][j].id === ID)
break OUTER;
}
}
或者将其变成一个函数,然后返回i
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.