对象键值的动态求和

时间:2017-02-22 14:05:42

标签: javascript jquery onclick



var dataJson = JSON.stringify({
  "11501": {
    "Name": "11501",
    "RecipeName": "N",
    "Time": 10,
    "Ingredient1ID": 1,
    "Ingredient1Quantity": 2,
  },
  "11502": {
    "Name": "11502",
    "RecipeName": "N",
    "Time": 10,
    "Ingredient1ID": 2,
    "Ingredient1Quantity": 2,
  },
  });
var jsonobject = JSON.parse(dataJson);
element = {};

function addElement(e, t) {
  element[jsonobject[e]['Ingredient1ID']] += jsonobject[e]['Ingredient1Quantity'];
  console.log(element);
}

 

   <button type="button" class="btn bg-purple btn-flat margin" onclick="addElement(11501,10);">
  <i class="fa fa-plus"></i> Add to queue
</button>
<button type="button" class="btn bg-purple btn-flat margin" onclick="addElement(11502,10);">
  <i class="fa fa-plus"></i> Add to queue item2
</button>
&#13;
&#13;
&#13;

addElement是一个onClick函数,它应该在每次点击时对元素[key]的数量求和,如果该键存在,它应该添加诸如+ = do之类的值。

目前它输出Object {11001:NaN},因为它没有基本值。我无法为密钥提供基本值,因为它们是动态数字示例:

首先点击

对象{ID:Qty}

对象{11501:2}

对象{11501:2 + 2}

是否可以选择完成此总和功能?如果它更容易,它也可以是一个数组。

https://jsfiddle.net/fxfLemtu/

2 个答案:

答案 0 :(得分:2)

您应该在数量上使用parseInt(),然后添加。这会奏效。目前,您正在尝试添加非整数的值。感谢

答案 1 :(得分:1)

看看这个例子。 我希望我理解你要做的事情。

&#13;
&#13;
.zip
&#13;
var queue = {};
var jsonobject = {
  "11501": {
    "Ingredient1ID": 1,
    "Ingredient1Quantity": 2,
  },
  "11502": {
    "Ingredient1ID": 2,
    "Ingredient1Quantity": 2,
  }
};

function addElement(e, t) {
  var elementId = jsonobject[e]['Ingredient1ID'];
  var elementQuantity = jsonobject[e]['Ingredient1Quantity'];
  
  if (!(elementId in queue)) {
    queue[elementId] = elementQuantity;
  } else {
    queue[elementId] += elementQuantity;
  }
  
  console.log(queue);
}
&#13;
&#13;
&#13;