Javascript 将map函数链接到数组构造函数

Javascript 将map函数链接到数组构造函数,javascript,arrays,map,inline,Javascript,Arrays,Map,Inline,为了找到一种方法来内联创建给定大小的数据数组,我尝试了 var n = 4; var data = (new Array(n)).map(function(x) { return 1 }); 这给了我 [undefined, undefined, undefined, undefined] 关于此, new Array(n) 给予 那 [undefined, undefined, undefined, undefined].map(function(x) { return 1 }); 返

为了找到一种方法来内联创建给定大小的数据数组,我尝试了

var n = 4;
var data = (new Array(n)).map(function(x) { return 1 });
这给了我

[undefined, undefined, undefined, undefined]
关于此,

new Array(n)
给予

[undefined, undefined, undefined, undefined].map(function(x) { return 1 });
返回

[1, 1, 1, 1]
我希望能够链接数组构造函数和map函数

对该行为有何见解?

新数组(n)
创建一个大小为
n
的数组,但其中不包含任何元素。这称为稀疏数组。虽然数组中没有元素,但浏览器将它们表示为
未定义的
。和
Array.prototype.map
将忽略尚未定义的数组元素

引述

仅对实际存在的数组元素调用callbackfn;对于数组中缺少的元素,不会调用它

为了能够链接
map
函数,您可能需要这样做

console.log(Array.apply(null, {length: n}).map(function(x) { return 1 }));
# [ 1, 1, 1, 1 ]

谢谢我还注意到浏览器的表示形式实际上是不同的(Chrome):新数组(2)返回[undefined x2]而不是[undefined,undefined]
console.log(Array.apply(null, {length: n}).map(function(x) { return 1 }));
# [ 1, 1, 1, 1 ]