Javascript访问二维数组

时间:2020-07-21 15:02:47

标签: javascript jquery arrays multidimensional-array

我有以下数组

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

如果我查找“ ABC”,如何获得“ 123”? 我尝试过

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

5 个答案:

答案 0 :(得分: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构造函数。如果您总是想保留插入顺序,则Map更好。

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

答案 1 :(得分:0)

您可以使用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; }

答案 2 :(得分:0)

您可以使用23.94

map

答案 3 :(得分:0)

使用数组不可能做到的事,不允许使用:

array["ABC"]

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

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

现在您可以根据需要选择它们:

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

答案 4 :(得分:0)

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

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

//second level 
// array[0][0]=> "ABC"
// array[0][1]=>  "123"

您还可以使用类似map的方法 或foreach