[英]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.