2015-05-14 52 views
0

我有一個看起來像這樣的數組。如何在二維數組中找到字符串?

var array[["a","b"],["c","d"],["e","f"]];   

我希望能夠通過數組搜索的字符串"d"並返回相應的值"c"

+0

您是否總是與兩元素子陣列的* second *元素匹配? –

+0

您可以創建一個循環,然後在第一維上查找字符串 –

+0

「搜索」條件不明確。 – undefined

回答

1

嘗試:

function find_str(array){ 
    for(var i in array){ 
    if(array[i][1] == 'd'){ 
     return array[i][0]; 
    } 
    } 
} 

編輯:

function find_str(array){ 
    for(var i=0;i<array.length;i++){ 
    if(array[i][1] == 'd'){ 
     return array[i][0]; 
    } 
    } 
} 
+0

我試過這個方法,但它返回「c,d」,我希望它只返回「c」。 – Goeff

+0

謝謝 - 我剛剛在代碼中發現了一個錯誤,修復了它,並且它工作正常。非常感謝 - 問題解決了! – Goeff

1

用於獲取包含指定值的數組中的所有元素的一般功能。以下功能使用Array.prototype的幾種方法:filterindexOf,map,slice,spliceconcat,用於平坦化陣列。

var array = [["a","b"],["c","d"],["c","e","f"]]; 

function findBy(arr, val) { 
    var ret = arr.filter(function(el) { 
     return el.indexOf(val) > -1; 
    }).map(function(el) { 
     var res = el.slice(); 
     res.splice(el.indexOf(val), 1); 
     return res; 
    }); 
    return Array.prototype.concat.apply([], ret); 
} 

findBy(array, 'c'); 
// -> ["d", "e", "f"] 
findBy(array, 'b'); 
// -> ["a"] 
findBy(array, 'g'); 
// -> [] 
相關問題