有没有一种方法可以从一行中的数组值设置对象键

时间:2018-06-23 08:58:31

标签: javascript arrays object

说我有一个像这样的数组:

const myArray = ['HP', 'QP', 'PS'];

我想有一个对象,其键为myArray的值,例如

{ HP: 0, QP: 0, PS: 0 }

是否可以在一行中执行以下操作:

const myObj = {};
myArray.forEach(item => myObj[item] = 0);

4 个答案:

答案 0 :(得分:4)

尝试使用reduce

const myArray = ['HP', 'QP', 'PS'];
const myObj = myArray.reduce((a, key) => Object.assign(a, { [key]: 0 }), {});
console.log(myObj);

答案 1 :(得分:3)

您可以使用spread syntax ...将映射的对象分散(Object.assign)到一个对象中。

var keys = ['HP', 'QP', 'PS'],
    object = Object.assign(...keys.map(key => ({ [key]: 0 })));
    
console.log(object);

答案 2 :(得分:2)

一个衬板:

console.log(
  ['HP', 'QP', 'PS']
    .map( v => ({[v]: 0}) )
    .reduce( (p, n) => ({...p, ...n}), {} )
);

答案 3 :(得分:1)

console.log(['HP', 'QP', 'PS'] .reduce( (p, n) => ({...p, [n] :0 }), {} ));