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

var foo = [];

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

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


当前回答

我会用。。。数组(N).keys()

var foo=[…Array(5).keys()].map(foo=>foo+1)console.log(foo)

其他回答

基于高票答案和高票评论。

const range = (from, to) => [...Array(to + 1).keys()].slice(from);

// usage
let test = [];
test = range(5, 10);
console.log(test); // output: [ 5, 6, 7, 8, 9, 10 ]
Array.from({ length: (stop - start) / step + 1}, (_, i) => start + (i * step));

资料来源:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/from

你可以这样做:

var arr=数组.from(数组(10).keys())arr.shift()控制台日志(arr)

我会用。。。数组(N).keys()

var foo=[…Array(5).keys()].map(foo=>foo+1)console.log(foo)

简单量程发生器:

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