从JS中的多维数组中获取包含值的数组索引

时间:2017-05-26 22:02:22

标签: javascript arrays search javascript-objects

假设我在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()接受回调函数,但我无法正确应用它。

有什么建议吗?

1 个答案:

答案 0 :(得分:2)

您可以使用动态查找功能findByAnimal在findIndex

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

arr.findIndex( findByAnimal('horse') )

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