【发布时间】:2022-01-12 20:14:08
【问题描述】:
我正在尝试编写一个函数,该函数返回从“开始”值(包括)到“停止”值(不包括)的整数列表,并给出“步长”(或要递增的数字... )。
该函数应该能够处理传入的不同数量的参数。我相信我已经完成了大部分的函数,但我似乎得到了一个无限循环并且不确定为什么或如何继续。
这是我目前写的代码...
function range(start, stop, step) {
if (arguments.length===1) {
start = 0;
stop = arguments[0];
step = 1;
} else if (arguments.length===2) {
start = arguments[0];
stop = arguments[1];
step = 1;
} else if (arguments.length===3) {
start = arguments[0];
stop = arguments[1];
step = arguments[2];
}
// define result array
let result = [];
// create a for-loop
for (start; start < stop; start + step) {
result.push(start);
}
return result;
}
这里有一些示例调用及其预期输出...
range(10); -> [0,1,2,3,4,5,6,7,8,9]
range(1,11); -> [1,2,3,4,5,6,7,8,9,10]
range(0,30,5); -> [0,5,10,15,20,25]
range(0,-10,-1); -> [0,-1,-2,-3,-4,-5,-6,-7,-8,-9]
该函数还应该能够使用负“步长”值进行负范围。
有人可以向我解释为什么我似乎陷入了无限循环吗?
【问题讨论】:
-
start + step->start += step -
一个
for循环由三个表达式和一个主体组成:表达式(按顺序)是initialization、test和更新。 update 步骤应该更新 test 步骤正在使用的内容,以确定循环是否应该继续进行。start + step不更新 任何东西,它只是进行计算并丢弃结果。正如@VLAZ 所说,您想更新start:start += step。 -
感谢两位的帮助!
标签: javascript arrays for-loop arguments range