使用下面一行代码,我们就可以生成0…(N-1)数列。
Array.apply(null, {length: N}).map(Function.call, Number);
Array.apply(null, {length: N}) 返回一个由undefined填充的长度为N的数组(例如 A = [undefined, undefined, ...])。
A.map(Function.call, Number) 返回一个长度为N的数组,它的索引为I的元素为Function.call.call(Number, undefined, I, A)的结果。
Function.call.call(Number, undefined, I, A)可转化为Number(I),正好就是I。
结果为:[0, 1, ..., N-1]。
更全面的介绍,请看这里.
这里用到了Array.from https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Array/from
Array.from(new Array(N),(val,index)=>index);
A = new Array(N) 返回一个有N个_小孔_的数组 (例如 A = [,,,...], 但是对于x in 0...N-1时A[x] = undefined)。
F = (val,index)=>index 即 function F (val, index) { return index; }。
Array.from(A, F) 返回一个长度为N的数组,它的索引为I的元素为F(A[I], I)的结果,也就是I。
结果为:[0, 1, ..., N-1]。
如果你需要[1, 2, …, N]序列, 方法1 可改为:
Array.apply(null, {length: N}).map(function(value, index){
return index + 1;
});
方法2可改为:
Array.from(new Array(N),(val,index)=>index+1);