我正在寻找下面的任何替代方法来创建一个包含 1 到 N 的 JavaScript 数组,其中 N 仅在运行时已知。
var foo = [];
for (var i = 1; i <= N; i++) {
foo.push(i);
}
对我来说,感觉应该有一种方法可以在没有循环的情况下做到这一点。
原文由 Godders 发布,翻译遵循 CC BY-SA 4.0 许可协议
我正在寻找下面的任何替代方法来创建一个包含 1 到 N 的 JavaScript 数组,其中 N 仅在运行时已知。
var foo = [];
for (var i = 1; i <= N; i++) {
foo.push(i);
}
对我来说,感觉应该有一种方法可以在没有循环的情况下做到这一点。
原文由 Godders 发布,翻译遵循 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 许可协议
10 回答11.3k 阅读
5 回答4.9k 阅读✓ 已解决
4 回答3.2k 阅读✓ 已解决
2 回答2.8k 阅读✓ 已解决
3 回答2.4k 阅读✓ 已解决
3 回答2.2k 阅读✓ 已解决
2 回答2.7k 阅读✓ 已解决
如果我得到你想要的,你想要一个数字
1..n
的数组,以后可以循环遍历。如果这就是你所需要的,你可以这样做吗?
那么当你想使用它时……(例如,未优化)
例如,如果您不需要在数组中 存储 任何内容,您只需要一个可以迭代的正确长度的容器……这可能会更容易。
在此处查看实际操作:http: //jsfiddle.net/3kcvm/