我希望执行一个输出为:
console.log(range(1, 10));
// → [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
console.log(range(5, 2, -1));
// → [5, 4, 3, 2]
console.log(sum(range(1, 10)));
// → 55
我收到 array.length 的错误。请查找以下代码:
var array = [];
function range (arr){
var lower = Math.min(arr[0],arr[1]);
var upper = Math.max(arr[0],arr[1]);
for (var i=lower;i<=upper;i++){
array.push(i);
}
}
function sum(array){
for(var i=0;i < array.length;i++){
var total = total+array[i];
}
}
console.log(sum(range(1, 10)));
我是初学者,请帮忙。 谢谢。
最佳答案
这里有几个问题:
1.) 您没有在 range
函数中返回任何内容。您需要返回填充的数组。
2.) 您没有在 sum
函数调用中正确传递数组。
3.) 您没有在 sum
函数调用中返回任何内容。
如果不返回任何值,您就不会让您的代码块相互协作
var array = [];
function range (arr){
var lower = Math.min(arr[0],arr[1]);
var upper = Math.max(arr[0],arr[1]);
for (var i=lower;i<=upper;i++){
array.push(i);
}
return array; // return the array to be used in the sum function
}
function sum(array){
var total = 0; // need to create a variable outside the loop scope
for(var i in array){
total = total+array[i];
}
return total;
}
console.log(sum(range([1,10]))); // pass the array correctly
请注意,您需要在 sum
函数内的 for-loop
范围之外设置 total
变量。这样你就可以返回最终值。否则,它将返回 undefined
。
参见 fiddle :https://jsfiddle.net/udyhb95a/
关于javascript - 使用 Javascript 的范围总和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36718158/