嗨我正在做eloquent javascript的第一部分chp4一个范围的总和。 花了一些时间我确定我破解了第一部分。
“编写一个带有两个参数的范围函数,start和end, 并返回一个包含start中所有数字的数组 到(并包括)结束。“
我看过人们的答案,但他们都包括问题的其他部分。我想保持简单,毕竟如果我不能做第一部分那么就没有希望了。这似乎很容易。
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
thx guys
答案 0 :(得分:4)
您没有从range
返回任何内容。在return array;
函数中使用range
:
function range(start, end) {
let array = [];
for (let i = start; i <= end; i++){array.push(i);}
return array;
}
console.log(range(20 , 25));
&#13;
答案 1 :(得分:1)
变量array
用let
声明,赋予它块范围。它在函数range
function range(start, end) {
let array = [];
for (let i = start; i <= end; i++){array.push(i);}
}
及其持续时间在函数终止时到期。之后它就不存在了。
正如其他人已经说过的那样,return array
。
这样就可以为调用它的行保留一个引用。如果在那里分配给另一个引用,则数组的持续时间将延长直到未引用。然后进入垃圾收集。
示例:
let arr = range(5,10);
答案 2 :(得分:0)
雄辩的Java脚本的代码如下:
function range(start,end,step){
let myArr=[];
if(step){
for(let i=start;i<=end;i+=step){
myArr.push(i);
}
return myArr;
}
else{
for(let i=start;i<=end;i++){
myArr.push(i);
}
return myArr;}
}
function sum(arr){
let total=0;
for (let item of arr){
total +=item;
}
return total;
}
sum(range(1,10,2));