如何创建一个包含 1...N 的数组

新手上路,请多包涵

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

var foo = [];

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

对我来说,感觉应该有一种方法可以在没有循环的情况下做到这一点。

原文由 Godders 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.1k
2 个回答

如果我得到你想要的,你想要一个数字 1..n 的数组,以后可以循环遍历。

如果这就是你所需要的,你可以这样做吗?

 var foo = new Array(45); // create an empty array with length 45

那么当你想使用它时……(例如,未优化)

 for(var i = 0; i < foo.length; i++){
 document.write('Item: ' + (i + 1) + ' of ' + foo.length + '<br/>');
 }

例如,如果您不需要在数组中 存储 任何内容,您只需要一个可以迭代的正确长度的容器……这可能会更容易。

在此处查看实际操作:http: //jsfiddle.net/3kcvm/

原文由 scunliffe 发布,翻译遵循 CC BY-SA 4.0 许可协议

在 ES6 中使用数组 from()keys() 方法。

 Array.from(Array(10).keys())
//=> [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

使用 spread operator 的较短版本。

 [...Array(10).keys()]
//=> [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

从 1 开始,将 map 函数传递给 Array from() ,对象具有 length 属性:

 Array.from({length: 10}, (_, i) => i + 1)
//=> [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

原文由 Niko Ruotsalainen 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题