我正在寻找以下方法的任何替代方法,以创建包含1到N的JavaScript数组,其中N仅在运行时已知。
var foo = [];
for (var i = 1; i <= N; i++) {
foo.push(i);
}
对我来说,我觉得应该有一种不用循环的方法。
我正在寻找以下方法的任何替代方法,以创建包含1到N的JavaScript数组,其中N仅在运行时已知。
var foo = [];
for (var i = 1; i <= N; i++) {
foo.push(i);
}
对我来说,我觉得应该有一种不用循环的方法。
当前回答
在ES6中,您可以执行以下操作:
数组(N).fill().map((e,i)=>i+1);
http://jsbin.com/molabiluwa/edit?js安慰
编辑:更新问题后,将数组(45)更改为数组(N)。
控制台日志(数组(45).填充(0).映射((e,i)=>i+1));
其他回答
对以上内容进行改进:
var range = function (n) {
return Array(n).join().split(',').map(function(e, i) { return i; });
}
可以获得以下选项:
1) Array.init设置为值v
var arrayInitTo = function (n,v) {
return Array(n).join().split(',').map(function() { return v; });
};
2) 获得反向范围:
var rangeRev = function (n) {
return Array(n).join().split(',').map(function() { return n--; });
};
让我们分享我的:p
Math.pow(2, 10).toString(2).split('').slice(1).map((_,j) => ++j)
您可以使用此选项:
new Array(/*any number which you want*/)
.join().split(',')
.map(function(item, index){ return ++index;})
例如
new Array(10)
.join().split(',')
.map(function(item, index){ return ++index;})
将创建以下数组:
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
试试这个
const foo = numberOfItems=> [...Array(numberOfItems).keys()].map(i => i+1);
我在寻找一个功能性的解决方案,最终得到了:
function numbers(min, max) {
return Array(max-min+2).join().split(',').map(function(e, i) { return min+i; });
}
console.log(numbers(1, 9));
注意:join().split(',')将稀疏数组转换为连续数组。