使用es6从数组中获取对象

时间:2016-12-15 15:22:32

标签: ecmascript-6

我想有这个对象:

const m = {a:undefined, b:undefined, d:undefined};

但更愿意从数组中生成它:

const m = {}
const l = ["a","b","c"];
for (const i in l){
    m[l[i]] = undefined;
}

但是使用es6时这样做会更好吗?

2 个答案:

答案 0 :(得分:2)

您可以使用for/of,但Array#reduce(自ES5以来存在)可能更优雅:

const m = ['a', 'b', 'c'].reduce((o, k) => (o[k] = undefined, o), {});

但是,如果你需要这么多,我建议创建一个具有正确名称的可重用函数。

答案 1 :(得分:1)

您可以Array#map对象的每个属性,并使用spread syntaxObject#assign组合它们:



const m = Object.assign(...['a', 'b', 'c'].map((prop) => ({ [prop]: undefined })));

console.log(m);