我目前有2个obj并使用
jquery扩展函数,但是它会覆盖具有相同名称的键的值.如何将值一起添加?
- var obj1 = {
- "orange": 2,"apple": 1,"grape": 1
- };
- var obj2 = {
- "orange": 5,"banana": 1
- };
- mergedObj = $.extend({},obj1,obj2);
- var printObj = typeof JSON != "undefined" ? JSON.stringify : function (obj) {
- var arr = [];
- $.each(obj,function (key,val) {
- var next = key + ": ";
- next += $.isPlainObject(val) ? printObj(val) : val;
- arr.push(next);
- });
- return "{ " + arr.join(",") + " }";
- };
- console.log('all together: ' + printObj(mergedObj));
我得到obj1 = {“orange”:5,“apple”:1,“grape”:1,“banana”:1}
我需要的是obj1 = {“orange”:7,“apple”:2,“banana”:1}
解决方法
@H_404_11@ 所有$.extend都会加入这两个对象但它不会添加值,它会覆盖它们.您将不得不手动执行此操作. $.extend对于添加或修改对象的水果很有用,但如果你需要总和,你将需要循环:
- var obj1 = { orange: 2,apple: 1,grape: 1 };
- var obj2 = { orange: 5,banana: 1 };
- var result = $.extend({},obj2);
- for (var o in result) {
- result[o] = (obj1[o] || 0) + (obj2[o] || 0);
- }
- console.log(result); //=> { orange: 7,apple: 2,grape: 1,banana: 1 }