0

我想,我在过去的某个地方看到过它,但我找不到它。那么,有没有办法 myObject.x = 0, myObject不用逗号操作符来写呢?

我主要将它与reducers一起使用:

const arr = [{key: 'width', value:15}, {key: 'height', value:30}]
const obj = arr.reduce((acc, {key, value}) => (acc[key] = value, acc), {})

我知道,可以选择为此添加 polyfill 或函数,但我正在寻找官方解决方案(没有 spread ({...acc, [key]: value}))。

我可以想象像 pascal notation 这样 的东西obj.x := 1,或者只是让它表现得像串联。

也许有建议?

4

1 回答 1

1

您可以采取Object.assignwhich 接受目标和来源并返回目标。

const
    arr = [{ key: 'width', value: 15 }, { key: 'height', value: 30 }],
    obj = arr.reduce(
        (acc, { key, value }) => Object.assign(acc, { [key]: value }),
        {}
    );

console.log(obj);

保持相同对象引用的证明object.assign

const
    arr = [{ key: 'width', value: 15 }, { key: 'height', value: 30 }],
    o = {},
    obj = arr.reduce(
        (acc, { key, value }) => Object.assign(acc, { [key]: value }),
        o
    );

console.log(o);
console.log(obj);

于 2021-05-17T13:26:10.253 回答