javascript – 如何通过从具有相同名称的键一起添加数值来$.extend 2个对象?

前端之家收集整理的这篇文章主要介绍了javascript – 如何通过从具有相同名称的键一起添加数值来$.extend 2个对象?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我目前有2个obj并使用 jquery扩展函数,但是它会覆盖具有相同名称的键的值.如何将值一起添加
  1. var obj1 = {
  2. "orange": 2,"apple": 1,"grape": 1
  3. };
  4.  
  5. var obj2 = {
  6. "orange": 5,"banana": 1
  7. };
  8.  
  9. mergedObj = $.extend({},obj1,obj2);
  10.  
  11. var printObj = typeof JSON != "undefined" ? JSON.stringify : function (obj) {
  12. var arr = [];
  13.  
  14. $.each(obj,function (key,val) {
  15. var next = key + ": ";
  16. next += $.isPlainObject(val) ? printObj(val) : val;
  17. arr.push(next);
  18. });
  19.  
  20. return "{ " + arr.join(",") + " }";
  21. };
  22.  
  23. 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对于添加修改对象的水果很有用,但如果你需要总和,你将需要循环:
  1. var obj1 = { orange: 2,apple: 1,grape: 1 };
  2. var obj2 = { orange: 5,banana: 1 };
  3. var result = $.extend({},obj2);
  4. for (var o in result) {
  5. result[o] = (obj1[o] || 0) + (obj2[o] || 0);
  6. }
  7. console.log(result); //=> { orange: 7,apple: 2,grape: 1,banana: 1 }

演示:http://jsfiddle.net/elclanrs/emGyb/

猜你在找的JavaScript相关文章