我正在寻找以下方法的任何替代方法,以创建包含1到N的JavaScript数组,其中N仅在运行时已知。

var foo = [];

for (var i = 1; i <= N; i++) {
   foo.push(i);
}

对我来说,我觉得应该有一种不用循环的方法。


当前回答

数组(…数组(9)).map((_,i)=>i);console.log(数组(…数组(9)).map((_,i)=>i))

其他回答

您可以使用Es6中的阵列填充和映射;就像一些人在回答这个问题时建议的那样。以下是一些示例:

Example-One: Array(10).fill(0).map((e,i)=>i+1)

Result-One: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

Example-Two: Array(100/10).fill(0).map((e,i)=>(i*10)+10)

Result-Two:[10, 20, 30, 40, 50, 60, 70, 80, 90, 100]

我更喜欢这样,因为我觉得这很简单。

使用不修改Number.prototype的生成器函数的可移植版本。

函数序列(最大值,步长=1){返回{[Symbol.iiterat]:函数*(){对于(设i=1;i<=max;i+=步长),得出i}}}console.log([…序列(10)])

只是另一个ES6版本。

通过使用Array.from第二个可选参数:

Array.from(arrayLike[,mapFn[,thisArg]])

我们可以从空数组(10)位置构建编号数组:

Array.from(Array(10), (_, i) => i)

var arr=数组.来自(数组(10),(_,i)=>i);文档.写入(arr);

简单量程发生器:

    const min = 2000;
    const max = 2022;
    const range = Array.from({ length: max - min + 1 }, (v, k) => k + min); 
    console.log('range', range);

在v8中填充数组的最快方法是:

[...Array(5)].map((_,i) => i);

结果将为:[0,1,2,3,4]