循环范围,逐步?

时间:2018-08-10 00:06:20

标签: javascript for-loop

我正在尝试定义一个包含3个整数参数的函数范围:开始,结束和步骤。

该函数应该从开始到结束逐步返回一个数字数组。

这似乎很简单,但是我的代码不正确:

const range = function(start, end, step) {
  for (let i = start; i <= end; i += step);
  return (start, end, step);
}

console.log(range(0, 10, 2));  

为什么我的代码不正确?

谢谢。

2 个答案:

答案 0 :(得分:2)

您的for循环没有执行任何操作。特别是,它不是在创建数组。您只是想返回3个输入,而不是应该生成的数字数组。但是,由于要将它们与逗号运算符组合在一起,因此只需返回最后一个参数(请参见What does a comma do in JavaScript expressions?)。

您的循环需要一个将当前元素添加到数组的主体。

const range = function(start, end, step) {
  const result = []
  for (let i = start; i <= end; i += step) {
    result.push(i);
  }
  return result;
}

console.log(range(0, 10, 2));

答案 1 :(得分:1)

创建一个数组,并使用现有的for循环将值推入该数组,然后返回该数组。我给出了for循环和while循环来完成任务。

// using a for loop
const range = function(start, end, step) {
  let arr = [];
  for (i = start; i <= end; i += step){
     arr.push(i);
  };
  return arr;
}

console.log("Using a for loop: ", range(0, 10, 2)); // gives [ 0, 2, 4, 6, 8, 10]

// using a while loop
const range2 = function(start, end, step) {
  let arr = [];
  let i = start
  while (i <= end){
     arr.push(i); 
     i += step;
  };
  return arr;
}

console.log("Using a while loop: ", range2(0, 10, 2)); // gives [ 0, 2, 4, 6, 8, 10]

相关问题