Javascript 访问二维数组
Posted
技术标签:
【中文标题】Javascript 访问二维数组【英文标题】:Javascript Access Two-Dimensional Array 【发布时间】: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
【问题讨论】:
为什么不使用对象? 【参考方案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
s 会更好。
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
【讨论】:
以上是关于Javascript 访问二维数组的主要内容,如果未能解决你的问题,请参考以下文章