目标:从循环中收集所有结果(循环遍历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
答案 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));