将数组转换为对象布尔值

时间:2018-06-23 17:45:41

标签: javascript arrays object

我有这个数组["one","two","three"]想要将其转换成这个{one:true, two:true, three:true}。基本上,所做的就是将数组项转换为对象的键,并使它们为布尔值。我尝试使用传播运算符{... arr}导致{0:'one',1:'two',2:'three'},有任何想法吗?

3 个答案:

答案 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);