在JavaScript中将一个对象添加到另一个对象

6
我有2个对象,我需要将一个对象添加到另一个对象中。
var loc = {
  leftArray: [],
  topArray: [],
  bottomArray: [],
  rightArray: []
}

var obj = {
  id: "ce",
  icon: "logo/image.png",
  name: "CE",
  type: "type2",
  version: 3.4
}

var obj = {
  id: "ce",
  icon: "logo/image.png",
  name: "CE",
  type: "type2",
  version: 3.4,
  leftArray: [],
  topArray: [],
  bottomArray: [],
  rightArray: []
}

有没有简单的方法来做这件事?


1
也许你正在寻找 Object.assign() - Pointy
这里的解决方法是 var obj = Object.assign(obj, loc) - Ashish
如果您有lodash库,您也可以使用它的merge方法。https://lodash.com/docs/#merge - devtye
使用像 obj.leftArray=[]; 这样的语法,可以自动生成新的 obj。 - mittal bhatt
2个回答

7
你可以使用Object.assign()来完成它。
obj = Object.assign(obj, loc);

或者只是
Object.assign(obj, loc);

如T.J.Crowder在评论中所建议的那样。

只是顺带一提,在这种情况下不需要进行赋值,只需使用 Object.assign(obj, loc); 就足够了。(而且你肯定不想要 var,因为 obj 已经声明过了。) - T.J. Crowder
@T.J.Crowder 是的,你说得对,不需要重新声明变量。我不知道你不需要分配Object.assign()的结果。谢谢你提供的信息。我已经相应地编辑了我的答案。 - user10243107
Object.assign 返回你传入的第一个对象。这样你就可以传入一个对象初始化器(“字面量”),像这样:const foo = Object.assign({}, something, blah); 这只是 const foo = {}; Object.assign(foo, something); 的一行版本。感谢您的贡献,欢迎加入! - T.J. Crowder

2
你可以使用Spread语法将它们合并,例如:
let objOne = { a: 'hi' }
let objTwo = { b: 'hello' }
let objOneAndTwo = { ...objOne, ...objTwo }; // { a: 'hi', b: 'hello' }

或者通过使用Object.assign:
let objOneAndTwo = Object.assign({}, a, b)

请注意,如果您的对象具有相同名称的属性,则优先级将为最右侧的对象(在此示例中为objectTwo)。
附加信息:

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/assign

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Spread_syntax


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接