我正在阅读 Eloquent JavaScipt 第三版来学习 JavaScript。我做了书中的一个练习,并且确信它是正确的。但显然我错了,因为它给我的结果与书中的解决方案不同。
目标是
编写一个范围函数,它接受两个参数(start 和 end),并返回一个包含从 start 到(并包括)end 的所有数字的数组。
编写一个 sum 函数,它接受一个数字数组并返回这些数字的总和
这是我的代码。
function range(a, b, c = a < b ? 1 : -1){
let numbers = [];
if (c > 0) {
for (let i = a; i <= b; i += c) numbers.push(i);
} else {
for (let i = a; i >= a; i += c) numbers.push(i);
}
return numbers;
}
function sum(array){
let result = 0;
for (let i = 0; i <= array.length; i++){
result += array[i];
}
return result;
}
下面是书上的解决方案
function range(start, end, step = start < end ? 1 : -1) {
let array = [];
if (step > 0) {
for (let i = start; i <= end; i += step) array.push(i);
} else {
for (let i = start; i >= end; i += step) array.push(i);
}
return array;
}
function sum(array) {
let total = 0;
for (let value of array) {
total += value;
}
return total;
}
所以,如果我们运行
console.log(range(1, 10));
console.log(range(5, 2, -1));
console.log(sum(range(1, 10)));
我的结果是
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
[5]
NaN
预期结果是
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
[5, 4, 3, 2]
55
对我来说,代码看起来是一样的。我在这里缺少什么?
阿晨1998
相关分类