有没有一种方法可以将地图的所有条目设置为值

时间:2018-08-21 19:02:18

标签: javascript

我有一个数组,希望用作我的地图的键,并将每个值设置为true。除了在我的数组上使用forEach循环设置每个条目之外,还有其他方法吗?这就是我现在的做法:

const list = [0, 1, 2, 3];
const myMap = new Map();
list.forEach(element => myMap.set(element, true));

有更好的方法吗?

5 个答案:

答案 0 :(得分:4)

一种更简洁,实用的方法是将列表的映射作为参数传递给Map:

const list = [0, 1, 2, 3];
const myMap = new Map(list.map(key => [key, true]));

之所以有效,是因为new Map takes an iterable of key/value pairs。数组是有效的可迭代对象。

list.map使代码的评估类似于

new Map([
  [0, true],
  [1, true],
  [2, true],
  [3, true]
]);

答案 1 :(得分:2)

您可以为Map构造函数使用一个数组。

const list = [0, 1, 2, 3];
const myMap = new Map(list.map(k => [k, true]));

console.log([...myMap]);
.as-console-wrapper { max-height: 100% !important; top: 0; }

答案 2 :(得分:1)

如果您选择将解决方案与let myCompanyList = [{name: "coca-cola", size: "big", color: "red"}, {name: "my-cola", size: "small", color: "purple"},{name: "pepsi", size: "big", color:"blue"}]; let result = {}; result.companies = myCompanyList.reduce((a,curr)=>{ a[curr.size] = a[curr.size] || {}; a[curr.size][curr.name] = {"color" : curr.color}; return a; },{}); console.log(result);配合使用,则请注意潜在的浏览器兼容性问题(例如旧IE)。在此处查看更多详细信息:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Map

答案 3 :(得分:0)

您可以使用地图的构造函数

new Map(list.map(x=>[x, true]))

答案 4 :(得分:0)

const list = [0, 1, 2, 3];
map = new Map(list.map(index => [index, true]));