在javascript中查找二维对象数组中的值索引

在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

我有一个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}], [{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