zrz*_*zrz 2 javascript arrays inline map
试图找到一种方法来内联创建一个数据数组给定它的大小,我试过
var n = 4;
var data = (new Array(n)).map(function(x) { return 1 });
Run Code Online (Sandbox Code Playgroud)
这给了我
[undefined, undefined, undefined, undefined]
Run Code Online (Sandbox Code Playgroud)
对此
new Array(n)
Run Code Online (Sandbox Code Playgroud)
给
[undefined, undefined, undefined, undefined]
Run Code Online (Sandbox Code Playgroud)
然后
[undefined, undefined, undefined, undefined].map(function(x) { return 1 });
Run Code Online (Sandbox Code Playgroud)
回报
[1, 1, 1, 1]
Run Code Online (Sandbox Code Playgroud)
我希望能够链接Array构造函数和map函数.
对这种行为的任何见解?
new Array(n)创建一个大小的数组n,但没有元素.这称为稀疏数组.虽然数组中没有元素,但浏览器将它们表示为undefined.并且Array.prototype.map将忽略尚未定义的阵列元素.
引用ECMA 5.1规范Array.prototype.map,
callbackfn仅针对实际存在的数组元素调用; 它不会被调用缺少数组的元素.
为了能够链接该map功能,您可能希望这样做
console.log(Array.apply(null, {length: n}).map(function(x) { return 1 }));
# [ 1, 1, 1, 1 ]
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
233 次 |
| 最近记录: |