Arm*_*and 5 javascript arrays object
可能重复:
如何动态合并两个JavaScript对象的属性?
如果我有两个Javascript对象,我将其用作键值对列表:
var a = {a:1};
var b = {b:2};
Run Code Online (Sandbox Code Playgroud)
将它们组合成包含两者属性的第三个对象的最有效方法是什么?
var c = {a:1, b:2};
Run Code Online (Sandbox Code Playgroud)
如果一个或两个我不介意a,并b在此过程中被修改.
你可以这样做:
var c = {};
for (var key in a) {
c[key] = a[key];
}
for (var key in b) {
c[key] = b[key];
}
Run Code Online (Sandbox Code Playgroud)
如果你想进行深度合并(假设你不想复制函数和原型),你可以使用:
function goclone(source) {
if (Object.prototype.toString.call(source)==='[object Array]') {
var clone = [];
for (var i=0; i<source.length; i++) {
if (source[i]) clone[i] = goclone(source[i]);
}
return clone;
} else if (typeof(source)=="object") {
var clone = {};
for (var prop in source) {
if (source[prop]) {
var firstChar = prop.charAt(0);
clone[prop] = goclone(source[prop]);
}
}
return clone;
} else {
return source;
}
}
var c = {};
for (var key in a) {
c[key] = goclone(a[key]);
}
for (var key in b) {
c[key] = goclone(b[key]);
}
Run Code Online (Sandbox Code Playgroud)
但坦率地说,我从未在javascript中看到过深度合并的用途......