2017-05-26 98 views
0

假设我有一个JavaScript多功能使用维数组:在JS获取从多维数组Array包含价值指数

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

'arr.findIndex(sa => sa [0] ===“horse”);' – Redu

回答

2

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

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

arr.findIndex(findByAnimal('horse')) 

方式findIndex的工作原理是在ARR每个项目都传递到回调,第一个“truthy”返回从回调值会产生指数,或-1如果没有项目返回真相。

+0

谢谢@詹姆斯,我很快意识到这一点,并更新了答案 –

+0

@yevg如果你觉得这个有用,随意标记为已回答或提供反馈。谢谢 –