【问题标题】:Get Index of Array Containing Value from Multi-dimensional Array in JS从JS中的多维数组中获取包含值的数组的索引
【发布时间】:2017-05-26 22:02:22
【问题描述】:

假设我在 JavaScript 中有一个多维数组:

var arr = [
    ['cat','23','5123'],
    ['dog','53','522'],
    ['bird','335','512'],
    ['horse','853','152'], 
    ['monkey','13','5452']
];

我想在arr 中获取第一个索引中包含horse 的数组的索引(输出应该是3)。

我可以通过以下方式做到这一点:

var index_i_need;

for(var i in arr){

    if(arr[i][0]==='horse') {

        index_i_need = i;
        break;
    }
}

console.log(index_i_need);  // 3
console.log(arr[index_i_need]); // ['horse','853','152']

但这不是可扩展的。

我希望有一些更直接的方法,例如indexOf()

我知道findIndex() 有一个回调函数,但我无法正确应用它。

有什么建议吗?

【问题讨论】:

  • arr.findIndex(sa => sa[0] === "horse");

标签: javascript arrays search javascript-objects


【解决方案1】:

您可以使用动态查找函数 findByAnimal 在 findIndex 中使用

function findByAnimal(animal) {
  return function(innerArr){
    return innerArr[0] === animal
  }
}

arr.findIndex( findByAnimal('horse') )

findIndex 的工作方式是将 arr 中的每个项目传递给回调,回调的第一个“真实”返回值将产生索引,如果没有项目返回真实,则为 -1。

【讨论】:

  • 感谢@James,我很快意识到了这一点并更新了答案
  • @yevg 如果您觉得这很有用,请随时标记为已回答或提供反馈。谢谢
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-04-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-11-26
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多