函数不是在数组中打印出1到10

时间:2017-04-19 22:11:25

标签: javascript arrays

我创建了一个函数,我希望传递2个参数,并且我将这些数字传递给那些参数,我希望函数不仅存储这2个数字,而且将它们之间的所有数据存储到数组中。这是我的代码:

    a = [];

var range = function(start, end) {
  for (j=start;j<=end;j++) {
  return a.push(j);
  return a;
  }
}

console.log(range(5, 20));

在这种情况下,我希望它将数字5 - 20存储到我的数组中(a),以便稍后通过另一个函数得到总和。

我上面的代码无效。我做错了什么?

3 个答案:

答案 0 :(得分:2)

return关键字立即中止该功能。将其移到for循环之外以获得所需的结果。

var a = [];

var range = function(start, end) {
  for (j = start; j <= end; j++) {
    a.push(j);
  }
  return a;
}

console.log(range(5, 20));

答案 1 :(得分:0)

完成循环后返回。

var range = function(start, end) {
  a = [];
  for (j=start;j<=end;j++) {
    a.push(j);
  }
  return a;
}

console.log(range(5, 20));

答案 2 :(得分:0)

正如其他人所指出的,你的主要问题是你在第一次循环迭代后从函数返回。您还返回a.push(),它返回数组的长度,而不是实际的数组。

更好的解决方案,但不是使用全局变量,只是利用内置的数组原型方法,如下所示:

您可以使用Array(end-start + 1)创建一个包含所需元素数量的数组。然后,您可以使用Array.apply().map()映射到数组中的数字,从start开始,并按数组元素的索引递增。

var range = function(start, end) {
  return Array.apply(null, Array(end - start + 1)).map((elem, index) => start + index);
}

console.log(range(5, 20));