如何在一个对象中将具有相同名称的键一起添加数值?

时间:2015-09-25 12:13:24

标签: javascript jquery arrays object

我创建了一个对象,如果在对象中复制了键,则想要对数值求和

var obj = {
  "orange": 1,
  "apple": 1,
  "grape": 1,
  "orange": 1
};

输出应该是

obj = { "orange": 2, "apple": 1, "grape": 1 }

3 个答案:

答案 0 :(得分:0)

你可以使用类似的东西:

BugOfThings = function() {}
BugOfThings.prototype.add = function(thing, count) {
    count = count || 1;
    this[thing] = (this[thing] || 0) + count;
}
var bug = new BugOfThings();
bug.add("orange", 1);
bug.add("apple", 1);
bug.add("grape", 1);
bug.add("orange", 1);

但在这种情况下,输出将包含添加字段

答案 1 :(得分:0)

我找到了解决方案:

var tagSelected = [{ "orange": 1, "apple": 1, "grape": 1, "orange": 1 }];
var tagSelectedTotal = [];

$.each(tagSelected, function() {
  var fount = false;
  var tag = this;
  $.each(tagSelectedTotal, function() {
    if( this.name == tag.name ) {
      this.value = parseInt(this.value) + parseInt(tag.value);
      found = true;
      return false;
    }
  });
  if( !found ) {
    tagSelectedTotal.push( tag );
  }
});

答案 2 :(得分:-1)

{ "orange": 1, "apple": 1, "grape": 1, "orange": 1 }

这是不可能的(非法?) JSON JS我想。
JSON IS NOT JS

只会输出

{ "orange": 1, "apple": 1, "grape": 1}

所以基本上你的问题无法回答。