假设我在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()
接受回调函数,但我无法正确应用它。
有什么建议吗?
答案 0 :(得分:2)
您可以使用动态查找功能findByAnimal
在findIndex
function findByAnimal(animal) {
return function(innerArr){
return innerArr[0] === animal
}
}
arr.findIndex( findByAnimal('horse') )
findIndex的工作方式是将arr中的每个项目传递给回调,第一个" truthy"来自回调的返回值将产生索引,如果没有项返回真实,则返回-1。