是否可以通过解构从数组创建对象?

时间:2019-04-20 07:06:11

标签: javascript arrays object ecmascript-6 destructuring

是否可以这样做:

const foo = [1, 2];
const bar = {
    a: foo[0],
    b: foo[1],
    c: 'something else not in array'
};

作为单个语句,是否无需声明foo

例如,数组可以是

的结果
"1, 2".split(', ')

并且您要避免使用临时变量声明,而使用"1""2"作为新对象中两个属性(可能不是唯一的属性)的值。

我可以想像像这样的东西,尽管由于种种原因都不可行:

const bar { a, b, c: 'something else not in array' } = [1, 2];

const bar { a:[0], b:[1], c: 'something else not in array' } = [1, 2];

编辑: 我发现不使用IIFE的最接近的是

Object.assign({c: 'something else not in array'}, [1, 2])

它具有负数,而不是属性“ a”和“ b”,而是属性“ 0”和“ 1”:

{0: 1, 1: 2, c: "something else not in array"}

2 个答案:

答案 0 :(得分:1)

Yes, using an IIFE:

 const bar = (([a, b]) => ({ a, b, c: "other props" }))([1, 2]);

答案 1 :(得分:0)

如果恰好涉及两个属性/值,那么reduce也可以工作:

const bar = [1, 2].reduce((a, b) => ({ a, b, c: "other"}));