如何在Javascript中组合两个对象?
可能重复:如何在Javascript中组合两个对象?,javascript,arrays,object,Javascript,Arrays,Object,可能重复: 如果我使用两个Javascript对象作为键值对列表: var a = {a:1}; var b = {b:2}; 将它们组合成包含两者属性的第三个对象的最有效方法是什么 var c = {a:1, b:2}; 我不介意在此过程中修改a和b中的一个或两个。您可以简单地执行以下操作: var c = {}; for (var key in a) { c[key] = a[key]; } for (var key in b) { c[
如果我使用两个Javascript对象作为键值对列表:
var a = {a:1};
var b = {b:2};
将它们组合成包含两者属性的第三个对象的最有效方法是什么
var c = {a:1, b:2};
我不介意在此过程中修改
a
和b
中的一个或两个。您可以简单地执行以下操作:
var c = {};
for (var key in a) {
c[key] = a[key];
}
for (var key in b) {
c[key] = b[key];
}
如果要进行深度合并(假设不想复制函数和原型),可以使用以下方法:
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]);
}
函数goclone(源代码){
if(Object.prototype.toString.call(source)='[Object Array]'){
var克隆=[];
对于(VARI=0;甚至不可枚举属性的iCopy?不考虑嵌套对象?噢,拜托!:-)深度克隆如果与克隆不同…没有人说过任何关于深度复制的事情…为什么会有这些否决票?深度复制很少需要,也没有被要求。甚至深度克隆也很少见…@dystroy-什么是$。isArray
?你在使用jQuery吗?那么只需使用$。extend
,如果某个属性包含另一个对象,那么就结束并完成它ct或数组,您想要新对象中该属性的新副本或引用吗?这是什么问题?var a={a:1,c:4};var b={b:2,f:9,d:4};var c=combine(a,b);函数combine(array1,array2){for(array2中的键){array1[key]=array2[key];}返回array1}@艾莉森:看看你问题的顶部: