如果我有一个包含对象的数组,其中每个对象都有一个 id 属性,我可以使用以下方法找到索引:
data.findIndex(x=>x.id === newData.id);
但是如果数据是对象数组的数组呢?有没有一种很好的方法来获取该数据结构的两个索引?因此,data.findIndex
将以某种方便的形式返回 i
和 j
。
最佳答案
如果它是值数组,则可以在 findIndex
中使用 Array.includes
。
var data = [
[1,2,3],
[4,5,6],
[7,8,9]
]
var searchParam = 8;
var index = data.findIndex(x=>x.includes(searchParam))
console.log(index)
如果是更高级的数组对象数组,则可以使用递归。
var data = [
[{id: 1},{id: 2},{id: 3}],
[{id: 4},{id: 5},{id: 6}],
[{id: 7},{id: 8},{id: 9}]
]
var searchValue = 8;
var index = data.findIndex(x=>{
return searchInObject(x, searchValue);
})
function searchInObject(obj, searchValue){
var _s = JSON.stringify(obj);
if(_s.indexOf(searchValue)>-1){
if(Array.isArray(obj)){
return obj.some(function(o){
if(searchInObject(o, searchValue)) return true;
});
}
else if(typeof(obj) === 'object'){
for(var k in obj){
if(searchInObject(obj[k], searchValue)) return true;
}
}
else{
if(obj === searchValue) return true;
}
}
}
console.log(index)
关于javascript - 查找二维数组中的索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40259585/