我目前有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}
解决方法
所有$.extend都会加入这两个对象但它不会添加值,它会覆盖它们.
您将不得不手动执行此操作. $.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 }