Javascript:循环,迭代和添加新值

时间:2017-03-07 17:26:16

标签: javascript loops for-loop

目标:从循环中收集所有结果(循环遍历JSON对象数组)并将这些值一起添加以产生用户的总信用数。每次他们上课,他们都会获得学分,但是现在,我需要弄清楚如何将它们加在一起。我是Javascript的新手,我正在试图找出如何创建一个不断更新的函数(通过for循环),以便我可以通过网页中的HTML生成它。

我正在看这个stack example循环值(游戏)并尝试模仿它。我也通过这个JS tutorial查看for循环示例。

var sum = 0; for (var i = 1; i <= 50; i++) {    sum = sum + i; }
alert("Sum = " + sum);    // => Sum = 1275
  

它由三部分组成,以分号分隔。首先是   初始化器(var i = 1)初始化循环并执行   一开始只有一次。第二个是测试条件(i <= 50)。什么时候   条件表达式的计算结果为true,循环体是   执行。如果为false,则循环终止。第三部分是   每次迭代后调用的updater(i ++)。更新程序   通常递增或递减循环计数器。

我的代码:

    //Function that returns HTML for successfully retrieved results
    function resultsHTML(JSONResponseObjectArray) {
        var ddObjectArray = JSONResponseObjectArray;
        var resultString = '';
        //Loop through JSON Object Array
        for(eeIndex in ddObjectArray) {
            var creditHours = ddObjectArray[eeIndex].creditHours;

        resultString += ceHTML(creditHours);
        console.log("credit hours: " + creditHours);

}

}

    function addCredits(){
      var result = 0;
        for (var i = 0; i <= 0; i++){
        result = creditHours + i;
        }
        return result;
          console.log('new results ' + result);
      }

阵列输出(通过控制台):

credit hours: null
list.js:114 credit hours: 4
list.js:114 credit hours: 6
list.js:114 credit hours: null
list.js:114 credit hours: 4
list.js:114 credit hours: null

1 个答案:

答案 0 :(得分:2)

您通常使用reduce来对对象数组中的值求和(您的数据将是什么 - 假设您不显示数据)。只需使用您的数组调用以下addCredits()函数,将b.credit替换为包含数字的属性:

var creditHours = [{
  creditHours: 1
}, {
  creditHours: 2
}];

function addCredits(data) {
  return data.reduce(function(a, b) {
    a += b.creditHours;
    return a;
  }, 0)
}
console.log(addCredits(creditHours));