javascript - 查找二维数组中的索引

标签 javascript arrays ecmascript-6

如果我有一个包含对象的数组,其中每个对象都有一个 id 属性,我可以使用以下方法找到索引:

data.findIndex(x=>x.id === newData.id);

但是如果数据是对象数组的数组呢?有没有一种很好的方法来获取该数据结构的两个索引?因此,data.findIndex 将以某种方便的形式返回 ij

最佳答案

如果它是值数组,则可以在 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/

相关文章:

javascript - 如果选中复选框,如何只显示输入字段?

javascript - fast-csv 同步读取多个文件

javascript - Safari 中未获取 jQuery AJAX HTTP 错误代码

node.js - Babel 并将 Nodejs 部署到 Google App Engine

javascript - 如何在 React-Router 2.5 中创建动态链接属性

javascript - 来自多个 ajax 请求的求和值

javascript - 使用startsWith函数识别邮政编码的前三位数字

c# - 如何获取二维数组中的 DataGridView 数据?

javascript - vue.js 在更新数组后不更新 DOM

javascript - 完全卡住 const 变量