我的问题是我的第二个函数sum
。但是,这是完整的解释:
range
函数将范围的start
和end
个数作为参数,并用整个范围填充rangeArray[]
。
sum
函数将数组作为参数并添加数组中的所有数字。
我的sum
函数正在正确执行作业(将return
替换为console.log()
以查看此内容),但我宁愿让while循环打印一个最后一个数字(num)循环中断。
现在它只向控制台打印10(我怀疑是因为它正在打印数组+ 0中的最后一个元素,在这种情况下为10)。
TL;博士
为什么console.log(n)
在函数sum
中断后的while循环中不起作用?
rangeArray = []
function range(start, end) {
i = 0
while (i < end) {
rangeArray.push(start)
i = i + 1
start = start + 1
}
}
range(1, 10)
function sum(array) {
num = 0
i = 0
lastIndex = array.length - 1
while (i <= lastIndex) {
return num = num + array.pop()
i++
}
console.log(n)
}
sum(rangeArray)
&#13;
答案 0 :(得分:2)
从return
循环移除while
,这将从函数sum
返回,下一行console.log
将不会执行。
另一个问题是,您正在记录n
,其中变量的名称为num
。
rangeArray = []
function range(start, end) {
i = 0
while (i < end) {
rangeArray.push(start)
i = i + 1
start = start + 1
}
}
range(1, 10)
function sum(array) {
num = 0
i = 0
lastIndex = array.length - 1
while (i <= lastIndex) {
num = num + array.pop()
i++
}
document.write(num);
}
sum(rangeArray);
&#13;
如果您正在寻找优化的解决方案:
function sum(start, end) {
var total = 0;
while (start <= end) {
total += start++;
// Add the start value to total
// Increment the start value by one
}
document.write(total);
return total;
}
var total = sum(1, 10);
&#13;
答案 1 :(得分:0)
问题是while循环中的return
,它返回数组中第一项的值作为sum的值
function range(start, end) {
var rangeArray = [],
i = start; //use var to create it as a local variable
while (i <= end) {
rangeArray.push(i);
i++;
}
return rangeArray;
}
var rangeArray = range(1, 10)
snippet.log('range: ' + rangeArray)
function sum(array) {
var num = 0,
i = 0,
len = array.length
while (i < len) {
num += array[i];
i++
}
snippet.log('sum: ' + num)
return num;
}
sum(rangeArray)
&#13;
<!-- Provides the `snippet` object, see http://meta.stackexchange.com/a/242144/134069 -->
<script src="http://tjcrowder.github.io/simple-snippets-console/snippet.js"></script>
&#13;
你可以像
那样更清晰地写出来
function range(start, end) {
var rangeArray = [],
i = start; //use var to create it as a local variable
while (i <= end) {
rangeArray.push(i);
i++;
}
return rangeArray;
}
var rangeArray = range(1, 10)
snippet.log('range: ' + rangeArray)
function sum(array) {
var num = array.reduce(function(a, b) {
return a + b
});
return num;
}
var val = sum(rangeArray);
snippet.log('sum: ' + val)
&#13;
<!-- Provides the `snippet` object, see http://meta.stackexchange.com/a/242144/134069 -->
<script src="http://tjcrowder.github.io/simple-snippets-console/snippet.js"></script>
&#13;