【发布时间】:2018-05-28 11:19:12
【问题描述】:
嗨,我正在做 eloquent javascript chp4 The Sum of a Range 的第一部分。 花了一些时间后,我确定我已经破解了第一部分。
"写一个范围函数,它有两个参数,开始和结束, 并返回一个包含从开始的所有数字的数组 直到(包括)结束。”
我查看了人们的答案,但它们都包含问题的其他部分。我想保持简单,毕竟如果我不能做第一部分,那就没有希望了。这似乎很容易。
function range(start, end) {
let array = [];
for (let i = start; i <= end; i++){array.push(i);}
}
console.log(range(20 , 25));
但我不确定,我什至尝试复制和减少类似情况的书籍答案。
感觉就像我的大脑无法编写代码。我哪里错了?为什么它是未定义的?
下面给出答案
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))
// → [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
谢谢大家
【问题讨论】:
-
您没有在
range函数的末尾使用returnarray,导致对range的调用总是返回undefined。 -
return array就在关闭循环之前
标签: javascript arrays eloquent