通过json对数据执行计算

时间:2016-01-04 13:49:42

标签: javascript json

我正在尝试对通过JSON从外部源收集的数据执行简单的添加。我得到的数据是作为字符串返回但是是一个数字,所以我尝试使用parseInt()和Number()无济于事。我在下面展示了一段简单的代码:

 var total_energy = 0;
 var energy_val;

$.each(result.report.food.nutrients, function (i, v) {

if (v.name == "Energy"){

                     energy_val = v.value;

                     var energy = Number(energy_val);

                     total_energy = total_energy + energy;




                                          console.log("energy " + energy);
                                          console.log("totalenergy " + total_energy);
                                          energy_val = "";
                                          energy = 0;

  }
   }

控制台每次都返回正确的能量值,但总能量值似乎与能量值保持一致。总和似乎没有任何影响。谁能告诉我这个问题我哪里出错了?

3 个答案:

答案 0 :(得分:2)

console.log("energy " + total_energy);更改为console.log("energy " + energy);

答案 1 :(得分:0)

尝试parseInt你的值......可以是这个

答案 2 :(得分:0)

我怀疑它是否由于在循环中创建的闭包而在迭代项目。请尝试以下代码。

 var total_energy = 0;
 var energy_val;

$.each(result.report.food.nutrients, function (i, v) {
        var item = v;
       //Calling calculateEnergy() function so that each 'item' is the current instance 'v'  value.
       (function calculateEnergy(itemClicked))(item);
   }

function calculateEnergy(itemClicked){
   if(itemClicked.name == "Energy"){
                     energy_val = itemClicked.value;
                     var energy = Number(energy_val);

                     total_energy = total_energy + energy;
                     console.log("energy " + energy);
                     console.log("totalenergy " + total_energy);
                     energy_val = "";
                     energy = 0;
        }
}

我已在评论中添加了评论。

更新 console.log()是ajax请求的错误。因此,不要记录,而是尝试创建一个html div并在那里填充值。