Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Javascript中组合两个对象?_Javascript_Arrays_Object - Fatal编程技术网

如何在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}@艾莉森:看看你问题的顶部: