2017-05-26 66 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如果你覺得這個有用,隨意標記爲已回答或提供反饋。謝謝 –