我有这个数组["one","two","three"]
想要将其转换成这个{one:true, two:true, three:true}
。基本上,所做的就是将数组项转换为对象的键,并使它们为布尔值。我尝试使用传播运算符{... arr}
导致{0:'one',1:'two',2:'three'}
,有任何想法吗?
答案 0 :(得分:2)
您可以使用.reduce()
:
var object = array.reduce((m, v) => (m[v] = true, m), {});
回调函数也可以写为传统函数:
var object = array.reduce(function(m, v) {
m[v] = true;
return m;
}, {});
.reduce()
函数将数组中的每个值(上面的示例代码中的v
)与“累加器”值一起传递给回调。回调函数可以对累加器执行任何所需的操作,然后应将其返回。 .reduce()
的第二个参数是累加器的初始值,在这种情况下为新的空对象。
答案 1 :(得分:2)
您可以映射对象并将其分配给单个对象。
var array = ["one", "two", "three"],
object = Object.assign(...array.map(k => ({ [k]: true })));
console.log(object);
答案 2 :(得分:1)
我只会使用forEach
。
var keys = ["one","two","three"];
var obj = {};
keys.forEach(function (v) {
obj[v] = true;
});
console.log(obj);