本文介绍了合并两个对象而不覆盖的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我有一个类似的defaultObject:
I have a defaultObject like that:
var default = { abc: "123", def: "456", ghi: { jkl: "789", mno: "012" } };我还有另外一个:
var values = { abc: "zzz", ghi: { jkl: "yyy", } };如何将这2个对象与以下结果合并(无覆盖)?
How can I merge those 2 objects with the following result (no override)?
var values = { abc: "zzz", def: "456", ghi: { jkl: "yyy", mno: "012" } };(我不想更改默认对象!)
(I don't want to change the default object!)
推荐答案现在所有现代浏览器都支持ES2015,原生 Object.assign 可用于扩展对象
With ES2015 now being supported in all modern browsers, the native Object.assign can be used to extend objects
Object.assign({}, _default, values)Object.assign
请注意默认是保留关键字,并且可以不能用作变量名称
Note that default is a reserved keyword, and can't be used as a variable name
原始答案,写于2013年:
The original answer, written in 2013 :
由于这是用jQuery标记的,你可以使用 $ .extend 对于简单的跨浏览器解决方案
Since this is tagged with jQuery, you could use $.extend for a simple cross-browser solution
var temp = {}; $.extend(true, temp, _default, values); values = temp;更多推荐
合并两个对象而不覆盖
发布评论