嗨,我正在做雄辩的javascript chp4的第一部分,一个范围的总和。在花了一段时间之后,我确信我已经破解了第一部分。
编写一个范围函数,该函数接受两个参数start和end,并返回一个包含从start到end(包括在内)的所有数字的数组。
我看过人们的答案,但它们都包含了问题的更深层次的部分。我想保持简单,毕竟如果我不能完成第一部分,那么就没有希望了。这看起来很简单。
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的家伙
发布于 2018-05-28 19:21:04
您不会从range
返回任何内容。在range
函数中使用return array;
:
function range(start, end) {
let array = [];
for (let i = start; i <= end; i++){array.push(i);}
return array;
}
console.log(range(20 , 25));
发布于 2018-05-28 19:25:19
变量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);
发布于 2020-06-10 07:45:33
雄辩的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));
https://stackoverflow.com/questions/50565202
复制相似问题