【问题标题】:How can I find a string in a two dimensional array?如何在二维数组中找到字符串?
【发布时间】:2015-07-25 13:25:32
【问题描述】:

我有一个看起来像这样的数组。

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

我希望能够在数组中搜索字符串"d" 并返回相应的值"c"

【问题讨论】:

  • 你会一直匹配双元素子数组的 second 元素吗?
  • 你可以创建一个循环然后在第一个维度上找到字符串
  • “搜索”标准不明确。
  • [["a","b"],["c","d"],["e","f"]].filter(function(a){return a[1]==this}, "d")[0][0]
  • 我已经尝试了 find 命令和一些迭代过程,但我无法将每个项目的两个元素分开进行查询。

标签: javascript string multidimensional-array find


【解决方案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];
    }
  }
}

【讨论】:

  • 我试过这个方法,但它返回“c,d”,我希望它只返回“c”。
  • 谢谢 - 我刚刚在我的代码中发现一个错误,修复它并且它工作。非常感谢 - 问题解决了!
【解决方案2】:

获取包含指定值的数组的所有元素的通用函数。以下函数使用Array.prototype 的几种方法:filterindexOfmapslicespliceconcat 用于展平数组。

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');
// -> []

【讨论】:

    猜你喜欢
    • 2021-06-12
    • 1970-01-01
    • 2019-09-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-02
    • 2020-09-15
    • 1970-01-01
    相关资源
    最近更新 更多