说我手中有18号而不是数组。
在给定数字X而不是X元素数组的情况下,在JS中创建功能循环的最佳方法是什么?
我可以这样做:
[1,2,3].forEach(function(){
));
但如果我有3号
我能做到
for(var i = 0; i < 3; i++){
}
但我希望这个循环能够起作用
答案 0 :(得分:1)
如果你有一个数字而你想创建一个循环,那么你可以在for循环中使用限制条件中的数字。
for(var i = 0; i < number; i++)
编辑1:您只能在数组上使用foreach
,在这种情况下,因为您已经有一个数字,您可以创建该长度的数组,然后在其上使用foreach。
var foo = new Array(number).fill(0);
foo.foreach()
另一种选择是
var N = 18;
Array.apply(null, {length: N}).map(Number.call, Number)
结果[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17]
此帖子中有更多可用选项Create a JavaScript array containing 1...N
答案 1 :(得分:1)
Per this question,您可以使用以下方法“功能性地”迭代线性序列:
Array.apply(null, Array(number)).map(function () {}).forEach(...)
不确定这会给你带来什么好处,而不是带有索引的常规for
- 循环,尽管这是一个巧妙的技巧。
答案 2 :(得分:1)
我不明白你为什么要这样做。相当于:
[1,2,3].forEach(function(){ ... ));
是
var limit = n;
while (--limit) { // note: 0 is falsy
(function(){
})(limit);
}
或者如果你真的想要使用数组结构:
new Array(limit).fill(0).forEach(function(){...});
会做的。
您可能对Myth of the Day: Functional Programmers Don't Use Loops感兴趣。