我正在寻找以下方法的任何替代方法,以创建包含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);
}
对我来说,我觉得应该有一种不用循环的方法。
当前回答
所有这些都太复杂了。只要做到:
function count(num) {
var arr = [];
var i = 0;
while (num--) {
arr.push(i++);
}
return arr;
}
console.log(count(9))
//=> [ 0, 1, 2, 3, 4, 5, 6, 7, 8 ]
或者从a到b的范围
function range(a, b) {
var arr = [];
while (a < b + 1) {
arr.push(a++);
}
return arr;
}
console.log(range(4, 9))
//=> [ 4, 5, 6, 7, 8, 9 ]
其他回答
对于小范围,切片是不错的。N仅在运行时已知,因此:
[0, 1, 2, 3, 4, 5].slice(0, N+1)
获取n个介于最小值和最大值之间的随机数的数组(虽然不是唯一的)
function callItWhatYouWant(n, min, max) {
return Array.apply(null, {length: n}).map(Function.call, function(){return Math.floor(Math.random()*(max-min+1)+min)})
}
for(var i,a=[i=0];i<10;a[i++]=i);
a=[1、2、3、4、5、6、7、8、9、10]
试试看:
var foo = [1, 2, 3, 4, 5];
如果您正在使用CoffeeScript,可以通过执行以下操作创建范围:
var foo = [1..5];
否则,如果您使用的是普通JavaScript,那么如果要将数组初始化为可变长度,则必须使用循环。
空数组和数组中只有数字的解决方案
const arrayOne=新数组(10);console.log(arrayOne);const arrayTwo=[…数组(10).keys()];console.log(arrayTwo);var arrayThree=Array.from(Array(10).keys());console.log(arrayThree);const arrayStartWithOne=Array.from(Array(10).keys(),item=>item+1);console.log(arrayStartWithOne)