我正在尝试控制记录从1到10的所有数字的总和(如我的console.log和我调用函数中所见),但我只是难倒。
在我的第一个函数中,我做了它,所以数组将填满并打印出我设置的开始和结束之间的所有内容。我不知道如何重写sum函数使console.log显示55(1到10之间所有数字的总和)
a = [];
var range = function(start, end) {
for (j=start;j<=end;j++) {
a.push(j);
}
return a;
}
var sum = function(array) {
var array = a;
}
console.log(sum(range(1, 10)));
就像我说的那样,这是总和功能给我带来麻烦。我很难理解如何在这个小程序中使用它。
答案 0 :(得分:1)
就像我说的那样,这是总和功能给我带来麻烦。
您需要在array
中添加所有数字,然后返回结果:
a = [];
var range = function(start, end) {
for (j=start;j<=end;j++) {
a.push(j);
}
return a;
}
var sum = function(array) {
var result = 0;
for(var i = 0; i < array.length; i++) result += array[i];
return result;
}
console.log(sum(range(1, 10)));
答案 1 :(得分:0)
您应该能够使用减速器功能
var a = [];
var range = function(start, end) {
for (j=start;j<=end;j++) {
a.push(j);
}
return a;
}
var sum = function(array) {
return array.reduce(function(a, b) {
return a + b;
})
}
alert(sum(range(1,10)))
&#13;
请参阅此处Array.reduce MDN
答案 2 :(得分:0)
使用array
添加reduce()
个项目。请尝试以下方法:
a = [];
var range = function(start, end) {
for (j=start;j<=end;j++) {
a.push(j);
}
return a;
}
var sum = function(array) {
return array.reduce(function(sum, item){
return sum + item;
},0)
}
console.log(sum(range(1, 10)));
&#13;
.as-console-wrapper { max-height: 100% !important; top: 0; }
&#13;
答案 3 :(得分:-1)
您可以使用map
在数组中的所有项目上运行函数,如:
var a = [];
var range = function(start, end) {
for (j=start;j<=end;j++) {
a.push(j);
}
return a;
}
var sum = function(a) {
var accum = 0;
a.map(function(item) {
accum += item;
});
return accum;
}
console.log(sum(range(1,10)))
&#13;