Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/417.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 从JS中的多维数组中获取包含值的数组索引_Javascript_Arrays_Search_Javascript Objects - Fatal编程技术网

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

Javascript 从JS中的多维数组中获取包含值的数组索引,javascript,arrays,search,javascript-objects,Javascript,Arrays,Search,Javascript Objects,假设我在JavaScript中有一个多维数组: var-arr=[ [cat'、'23'、'5123'], [dog'、'53'、'522'], [bird'、'335'、'512'], [horse'、'853'、'152'], [‘猴子’、‘13’、‘5452’] ]; 我想得到arr中数组的索引,它在第一个索引中包含horse(输出应该是3) 我可以通过以下方式完成此操作: var index_i_need; for(var i in arr){ if(arr[i][0]==

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

var-arr=[
[cat'、'23'、'5123'],
[dog'、'53'、'522'],
[bird'、'335'、'512'],
[horse'、'853'、'152'],
[‘猴子’、‘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()
接受回调函数,但我一直无法正确应用它


有什么建议吗?

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

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

arr.findIndex( findByAnimal('horse') )

findIndex的工作方式是将arr中的每个项传递到回调中,回调中的第一个“truthy”返回值将生成索引,如果没有项返回truthy,则返回-1。

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

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

arr.findIndex( findByAnimal('horse') )

findIndex的工作方式是将arr中的每个项传递到回调中,回调中的第一个“truthy”返回值将生成索引,如果没有项返回truthy,则返回-1。

谢谢@James,我很快意识到了这一点并更新了answer@yevg如果您觉得这很有用,请随时标记为已回答或提供反馈。谢谢Hanks@James,我很快意识到了这一点,并更新了answer@yevg如果您觉得这很有用,请随时标记为已回答或提供反馈。谢谢
arr.findIndex(sa=>sa[0]==“horse”)
arr.findIndex(sa=>sa[0]==“horse”)