2015-05-14 127 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'); 
// -> [] 
相关问题