属性名称的数组值 javascript

Array value to properties name javascript

是否有一种单行方法可以将数组值转换为对象的属性名称?

示例:

var arr = ['name', 'age', 'size'];

{'name' :null, 'age':null, 'size':null}

其实我是这样处理的:

var arr = ['name', 'age', 'size'];
let obj = {};
arr.map(z => obj[z] = null);

我想那是最短的路,但我不确定。

使用reduce:

arr.reduce((prev, curr) => {
  return Object.assign(prev, {[curr]: null})
}, {})

或者你可以 one-line 如果你愿意,但我觉得它看起来更糟:

arr.reduce((prev, curr) => Object.assign(prev, {[curr]: null}), {})

请注意,Object.assign 是更好的编码方式,而不是使用扩展运算符 ({... })。

展开运算符在每个循环中创建一个新对象。这可能会导致严重的性能问题。

另一方面,

Object.assign 适用于第一个对象。

reduce 可以把它变成 one-liner:

var obj = arr.reduce((acc, curr)=> ({...acc, [curr]: null}),{})

您可以使用Array.prototype.reduce方法将数组转换为另一种类型

var arr = ["name", "age", "size"];

let output = arr.reduce((accumulator, current) => {
  return {...accumulator, [current]: null}
}, {})

console.log(output);