'functional loop given a number instead of an array [duplicate]

Say I have a number 18, instead of an array, in hand.

What is the best way to create a functional loop in JS given a number X instead of array of X elements?

I can do this:

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

));

but if I have the number 3

I can do

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

}

but I want that loop to be functional instead



Solution 1:[1]

If you have a number and you want to create a loop then you can use the number in limiter condition in the for loop.

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

Edit 1: you can use foreach on arrays only, in that case since you have a number already you can create a array of that length and then use the foreach on it.

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

foo.foreach()

Also another option is

var N = 18;

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

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

Many more options available in this thread Create a JavaScript array containing 1...N

Solution 2:[2]

Per this question, you can "functionally" iterate over a linear sequence relatively easily using:

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

Not sure what advantage this gives you versus a regular for-loop with an index, though it is a neat trick.

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 Community
Solution 2 Community