在javascript中查找二维对象数组中的值索引
我有一个2D对象数组,如下所示:在javascript中查找二维对象数组中的值索引,javascript,arrays,multidimensional-array,for-loop,Javascript,Arrays,Multidimensional Array,For Loop,我有一个2D对象数组,如下所示: [[{id: 123}, {id: 456}, {id: 789}], [{id: 111}, {id: 222}, {id: 333}], [{id: 444}, {id: 555}, {id: 666}], [{id: 777}]] 我需要在顶级数组级别找到id的索引 因此,如果我要搜索值为“222”的and id属性,我希望返回1的索引 我尝试了以下方法: var arr = [[{id: 123}, {id: 456}, {id: 789}], [{i
[[{id: 123}, {id: 456}, {id: 789}], [{id: 111}, {id: 222}, {id: 333}], [{id: 444}, {id: 555}, {id: 666}], [{id: 777}]]
我需要在顶级数组级别找到id的索引
因此,如果我要搜索值为“222”的and 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
}
}
}
}
}
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;
对于(变量i=0;i
将代码包装在函数中,将注释替换为返回i
,通过返回哨兵值(例如-1)来解决:
函数indexOfRowContainingId(id,矩阵){
对于(var i=0,len=matrix.length;i-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;
}
}
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;
外部:用于(变量i=0;i
或者将其转换为函数,并返回i