属性名称的数组值 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);
是否有一种单行方法可以将数组值转换为对象的属性名称?
示例:
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);