【问题标题】:Javascript Access Two-Dimensional ArrayJavascript 访问二维数组
【发布时间】:2020-11-11 00:10:13
【问题描述】:

我有以下数组

var array = [["ABC", "123"], ["DEF", "456"];

如果我寻找“ABC?”,如何获得“123”? 我试过了

array["ABC"][1] //Want Output: 123
array["DEF"][1] //Want Output: 456

【问题讨论】:

  • 为什么不使用对象?

标签: javascript jquery arrays multidimensional-array


【解决方案1】:

您可以使用Array#find

var array = [["ABC", "123"], ["DEF", "456"]];
let abc = array.find(x=>x[0]==="ABC");
console.log(abc?.[1]);
let def = array.find(x=>x[0]==="DEF");
console.log(def?.[1]);
let nothing = array.find(x=>x[0]==="NOTHING");
console.log(nothing?.[1]);

但是,使用对象或Map 更适合此目的。您可以使用Object.fromEntries 将数组转换为对象。

var array = [["ABC", "123"], ["DEF", "456"]];
const obj = Object.fromEntries(array);
console.log(obj.ABC);
console.log(obj['DEF']);

您也可以将数组传递给Map 构造函数。如果您总是想保留广告订单,Maps 会更好。

var array = [["ABC", "123"], ["DEF", "456"]];
const map = new Map(array);
console.log(map.get("ABC"));
console.log(map.get("DEF"));

【讨论】:

    【解决方案2】:

    您可以使用find 来定位索引值为0 的项目。如果找到,则返回索引 1 处的值。

    const findByFirstValue = (arr, val) =>
      ((res) => res ? res[1] : null)(arr.find(v => v[0] === val))
    
    console.log(findByFirstValue([["ABC", "123"], ["DEF", "456"]], 'ABC'))
    .as-console-wrapper { top: 0; max-height: 100% !important; }

    【讨论】:

      【解决方案3】:

      你可以使用map

      const array = [["ABC", "123"], ["DEF", "456"]];
      const newMap = new Map();
      array.map(item=>{
        newMap[item[0]] = item;
      })
      console.log(newMap['ABC'][1]);

      【讨论】:

      • .map() 用于其循环功能并不是.map() 应该用于的用途。如果您不打算使用.map() 的输出,则想使用.forEach(),或者,将映射数组传递给Map 构造函数:const newMap = new Map(array.map(([k, arr]) => [k, [k, arr]]))
      • 另外,要向 Map 添加条目,您要使用 .set() 而不是括号表示法,因为这会将键/值添加到底层对象,而不是 Map(您可以阅读更多here)
      【解决方案4】:

      你试图做的事情是不可能使用数组的,你不允许使用:

      array["ABC"]
      

      由于数组的索引是基于数字的,因此您需要使用对象才能获得所需的内容:

      var array = {"ABC": ["123", "789"], "DEF": ["456", "323"]};
      

      现在您可以随意选择它们了:

      array['ABC'][1] // 123
      

      【讨论】:

        【解决方案5】:

        您可以使用索引从数组中获取值

        //first level
        // array[0] =>["ABC", "123"]
        // array[1] => ["DEF", "456"]
        
        //second level 
        // array[0][0]=> "ABC"
        // array[0][1]=>  "123"
        

        你也可以使用map之类的方法 或foreach

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2012-06-01
          • 2012-09-21
          • 1970-01-01
          • 1970-01-01
          • 2016-05-02
          • 1970-01-01
          • 2014-06-16
          • 2017-04-06
          相关资源
          最近更新 更多