首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >以函数方式向js对象添加字段

问以函数方式向js对象添加字段
EN

Stack Overflow用户
提问于 2017-04-02 07:37:40
回答 3查看 315关注 0票数 0

我在node.js中有一个带有一组字段的对象数组。让我们说

代码语言:javascript
复制
let arr = [ {a:1,b:2}, {a:3,b:6}]

我希望扩展所有对象并将其赋值给一个新变量。我天真的方法如下所示

代码语言:javascript
复制
let arr2 = arr.map(x => x.c = x.a + x.b )

但是,箭头函数返回的是x.a+x.b值,而不是x对象,因此这不能像我希望的那样工作。它也改变了arr的位置,这是非常非功能性和混乱的。

我对js比较陌生,所以从一开始我就想错了。这种对象扩展的惯用js表达式是什么?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2017-04-02 07:40:32

您可以使用Object.assign将所有属性从一个对象写入另一个对象。

代码语言:javascript
复制
const arr2 = arr.map(x => Object.assign({c: x.a + x.b}, x));

也许在将来的某个时候,随着物体的传播(还没有标准化):

代码语言:javascript
复制
const arr2 = arr.map(x => ({...x, c: x.a + x.b}));
票数 3
EN

Stack Overflow用户

发布于 2017-04-02 07:43:57

你可以用这个

代码语言:javascript
复制
let arr2 = arr.map(x => {
      x.c = x.a + x.b;
      return x;
});

也请参考工作片段。

​

代码语言:javascript
复制
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);

​

票数 1
EN

Stack Overflow用户

发布于 2017-04-02 08:33:20

虽然与其他答案的一般想法相同,但这可能稍微更容易读懂:

代码语言:javascript
复制
arr.map(({a, b}) => ({a, b, c: a + b}))
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43165828

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档