我在node.js中有一个带有一组字段的对象数组。让我们说
let arr = [ {a:1,b:2}, {a:3,b:6}]我希望扩展所有对象并将其赋值给一个新变量。我天真的方法如下所示
let arr2 = arr.map(x => x.c = x.a + x.b )但是,箭头函数返回的是x.a+x.b值,而不是x对象,因此这不能像我希望的那样工作。它也改变了arr的位置,这是非常非功能性和混乱的。
我对js比较陌生,所以从一开始我就想错了。这种对象扩展的惯用js表达式是什么?
发布于 2017-04-02 07:40:32
您可以使用Object.assign将所有属性从一个对象写入另一个对象。
const arr2 = arr.map(x => Object.assign({c: x.a + x.b}, x));也许在将来的某个时候,随着物体的传播(还没有标准化):
const arr2 = arr.map(x => ({...x, c: x.a + x.b}));发布于 2017-04-02 07:43:57
你可以用这个
let arr2 = arr.map(x => {
x.c = x.a + x.b;
return x;
});也请参考工作片段。
let arr = [ {a:1,b:2}, {a:3,b:6}];
let arr2 = arr.map(x => {
return Object.assign({c : x.a + x.b},x);
});
console.log(arr);
console.log(arr2);
console.log(arr);
发布于 2017-04-02 08:33:20
虽然与其他答案的一般想法相同,但这可能稍微更容易读懂:
arr.map(({a, b}) => ({a, b, c: a + b}))https://stackoverflow.com/questions/43165828
复制相似问题