我有一个数组,希望用作我的地图的键,并将每个值设置为true。除了在我的数组上使用forEach循环设置每个条目之外,还有其他方法吗?这就是我现在的做法:
const list = [0, 1, 2, 3];
const myMap = new Map();
list.forEach(element => myMap.set(element, true));
有更好的方法吗?
答案 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]));