将数组转换为布尔对象

Ger*_*gen 1 javascript arrays object

我有这个数组["one","two","three"]想把它转换成这个{one:true, two:true, three:true}。基本上我正在做的是将数组项转换为对象的键并使它们成为布尔值。我试过使用传播运算符{... arr},结果是{0:'one',1:'two',2:'three'},有什么想法吗?

Poi*_*nty 6

您可以使用.reduce()

var object = array.reduce((m, v) => (m[v] = true, m), {});
Run Code Online (Sandbox Code Playgroud)

回调函数也可以写成传统函数:

var object = array.reduce(function(m, v) {
  m[v] = true;
  return m;
}, {});
Run Code Online (Sandbox Code Playgroud)

.reduce()函数将数组v中的每个值(在上面的示例代码中)与“累加器”值一起传递给回调。回调函数可以对累加器做任何它想做的事情,然后它应该返回它。的第二个参数.reduce()是累加器的初始值,在这种情况下是一个新的空对象。


Nin*_*olz 6

您可以映射对象并将它们分配给单个对象。

var array = ["one", "two", "three"],
    object = Object.assign(...array.map(k => ({ [k]: true })));

console.log(object);
Run Code Online (Sandbox Code Playgroud)