gpt4 book ai didi

javascript - 如何在 JavaScript 中将键值对数组添加到 Map 中?

转载 作者:塔克拉玛干 更新时间:2023-11-02 22:58:18 26 4
gpt4 key购买 nike

我有一个键值对数组,其中每个键都有另一个长度恒定(即 2)的数组作为值。我如何才能将整个数组添加到 Map() 中,而不仅仅是为每一对执行 Map.set(key, value)

我知道在创建 Map() 实例时,我可以将一个像数组一样的可迭代对象传递给它,例如:let x = new Map(arr); 但是这个根据文档 here,IE 11 不支持.那么,任何人都可以帮我解决替代实现问题。

归根结底,我只想能够使用字符串键访问这两个值。如果有另一种方法可以实现,请指导我。

例子如下:

我创建了一个键值映射数组如下:

let arr = [
['ar', ['cl', 'bl']],
['bs', ['kl', 'ml']],
['cs', ['rk', 'uk']],
['da', ['mk', 'ak']]
];
let map = new Map(arr); // This isn't working.

谢谢。

最佳答案

如果您需要支持未实现 Map 的浏览器,只需使用普通对象,其中第一个数组项是键和第二个(子数组)值:

var arr = [
['ar', ['cl', 'bl']],
['bs', ['kl', 'ml']],
['cs', ['rk', 'uk']],
['da', ['mk', 'ak']]
];

var map = arr.reduce(function (obj, item) {
obj[item[0]] = item[1];
return obj;
}, {});

console.log(map['ar'], map.bs);

或 ES2015 方法(在 IE11 中不起作用):

const map = arr.reduce((obj, item) => ({
...obj,
[item[0]]: item[1],
}), {});

如果你想通过字符串键访问子数组,你无论如何都必须从数组转换它。

如果您想使用 Map,那么(除了修复数组定义中的错别字之外)您将通过 Map.prototype.get 函数提取内容:

var map = new Map(arr);
console.log(map.get('bs'));

如果您不想创建新对象,另一种方法是使用 Array.filter:

arr.filter(function (item) { return item[0] === 'ar' })[0][1];
arr.filter((item) => item[0] === 'ar')[0][1]; // ES2015

(可能包裹在函数中)

关于javascript - 如何在 JavaScript 中将键值对数组添加到 Map 中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48585502/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com