函数循环给出一个数字而不是数组

时间:2016-05-18 03:58:29

标签: javascript node.js

说我手中有18号而不是数组。

在给定数字X而不是X元素数组的情况下,在JS中创建功能循环的最佳方法是什么?

我可以这样做:

[1,2,3].forEach(function(){

));

但如果我有3号

我能做到

for(var i = 0; i < 3; i++){

}

但我希望这个循环能够起作用

3 个答案:

答案 0 :(得分:1)

如果你有一个数字而你想创建一个循环,那么你可以在for循环中使用限制条件中的数字。

for(var i = 0; i < number; i++)

编辑1:您只能在数组上使用foreach,在这种情况下,因为您已经有一个数字,您可以创建该长度的数组,然后在其上使用foreach。

var foo = new Array(number).fill(0);

foo.foreach()

另一种选择是

var N = 18;

Array.apply(null, {length: N}).map(Number.call, Number)

  

结果[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17]

此帖子中有更多可用选项Create a JavaScript array containing 1...N

答案 1 :(得分:1)

Per this question,您可以使用以下方法“功能性地”迭代线性序列:

Array.apply(null, Array(number)).map(function () {}).forEach(...)

不确定这会给你带来什么好处,而不是带有索引的常规for - 循环,尽管这是一个巧妙的技巧。

答案 2 :(得分:1)

我不明白你为什么要这样做。相当于:

[1,2,3].forEach(function(){ ... ));

    var limit = n;
    while (--limit) {  // note: 0 is falsy

    (function(){


      })(limit);
   }

或者如果你真的想要使用数组结构:

new Array(limit).fill(0).forEach(function(){...});

会做的。

您可能对Myth of the Day: Functional Programmers Don't Use Loops感兴趣。