在 JavaScript 中合并对象文字/json

merging object literals/json in javascript

本文关键字:文字 json 对象 合并 JavaScript      更新时间:2023-09-26

我正在尝试将所有数据对象合并为一个链接的对象

var person1 = {
    hello: {
        "david": {
            "hours": "44",
            "money": "22"
        }
    }
};

var person2 = {
    world: {
        "pearce": {
            "hours": "21",
            "money": "11"
        }
    }
};

我希望它看起来像这样:

var mergedObjects = {
    hello: {
        "david": {
            "hours": "44",
            "money": "22"
        }
    },
    world: {
        "pearce": {
            "hours": "21",
            "money": "11"
        }
    }
};

我知道如何使用数组执行此操作,但是如何在javascript中作为JSON对象来执行此操作,以保持正确的结构

看看这个....

答案在这里...如何动态合并两个 JavaScript 对象的属性?

JS小提琴

.JS:

 function mergeRecursive(obj1, obj2) {
  for (var p in obj2) {
    try {
      // Property in destination object set; update its value.
      if ( obj2[p].constructor==Object ) {
        obj1[p] = mergeRecursive(obj1[p], obj2[p]);
      } else {
        obj1[p] = obj2[p];
      }
    } catch(e) {
      // Property in destination object not set; create it and set its value.
      obj1[p] = obj2[p];
    }
  }
  return obj1;
}
var person1 = {
    hello: {
        "david": {
            "hours": "44",
            "money": "22"
        }
    }
};

var person2 = {
    world: {
        "pearce": {
            "hours": "21",
            "money": "11"
        }
    }
};
console.log(mergeRecursive(person1, person2));

检查这篇文章:链接

var person1 = {
    hello: {
        "david": {
            "hours": "44",
            "money": "22"
        }
    }
};

var person2 = {
    world: {
        "pearce": {
            "hours": "21",
            "money": "11"
        }
    }
};

function merge_options(obj1,obj2){
    var obj3 = {};
    for (var attrname in obj1) { obj3[attrname] = obj1[attrname]; }
    for (var attrname in obj2) { obj3[attrname] = obj2[attrname]; }
    return obj3;
}

merge_options(person1,person2);

你可以用jQuery轻松地做到这一点:

var person1 = {
    hello: {
        "david": {
            "hours": "44",
            "money": "22"
         }
    }
};

var person2 = {
    world: {
        "pearce": {
            "hours": "21",
            "money": "11"
        }
    }
};
var mergedObjects = $.extend({}, person1, person2);
console.dir(mergedObjects);