考虑:
var a = Array(3);
var b = [undefined,undefined,undefined];
Run Code Online (Sandbox Code Playgroud)
是什么原因a.map并b.map产生不同的结果?
a.map(function(){ return 0; }); //produces -> [undefined,undefined,undefined]
b.map(function(){ return 0; }); //produces -> [0,0,0]
Run Code Online (Sandbox Code Playgroud) 试图找到一种方法来内联创建一个数据数组给定它的大小,我试过
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函数.
对这种行为的任何见解?
我想了解这背后的原因:
var a = new Array(3);
var b = a.map(function () {
return 'b';
});
Run Code Online (Sandbox Code Playgroud)
结果是
A: [ , , ]
b: [ , , ]
当我期望b导致['b', 'b', 'b'].
在进一步的调查中,我发现如果我这样做a.push('a'),我会有[, , , 'a'].
并且在地图功能之后,b将成为[, , , 'b'].
这里发生了什么?为什么这些分配的单元格的行为与初始化不同?我最初期望这样做,如果它是一个数组文字,[undefined, undefined, undefined].map(fn)
我觉得很奇怪
Array(100).map(function (_, i) { return i + 1; })
Run Code Online (Sandbox Code Playgroud)
返回[undefined, undefined, ... , undefined]而不是[1, 2, ..., 100],即映射没有发生.相反,从100个undefined作品(演示)的数组开始.
是否Array(100)比其他100个回报的东西undefined元素?