【发布时间】:2018-09-28 14:37:10
【问题描述】:
[1,2].reduce((accum,val) => ({val}) ,{})
我希望上面的 reduce 函数会返回 {1:1, 2:2} 但它没有,这是怎么回事?我不是返回了一个对象吗?
【问题讨论】:
[1,2].reduce((accum,val) => ({val}) ,{})
我希望上面的 reduce 函数会返回 {1:1, 2:2} 但它没有,这是怎么回事?我不是返回了一个对象吗?
【问题讨论】:
您需要传播累加器(使用较新的 JS 或 babeljs)和computed property names。
console.log([1, 2].reduce((accum, val) => ({ ...accum, [val]: val }), {}));
【讨论】:
[1,2].reduce((accum,val) => { accum[val] = val
return accum } ,{})
这样就可以了。您没有引用起始对象。
【讨论】:
一种选择是使用Object.assign 添加新的属性和值
var result = [1, 2].reduce((accum, val) => Object.assign(accum, {[val]: val}), {})
console.log(result);
【讨论】:
使用可以这样写: 你需要传播累加器的价值。
[1,2].reduce((accum,val) => ({...accum, [val]:val}) ,{})
【讨论】: