理解使用 new Array(count) 创建的数组上的映射行为
使用 JavaScript 数组时,值得注意一个特殊的行为由使用语法 new Array(count) 创建的数组展示。
如代码片段中所示下面,在使用 new Array(count) 创建的稀疏数组(包含未定义元素的数组)上调用 map() 会生成一个包含未定义值的数组:
var x = new Array(3); x.map(function() { return 0; }); // [undefined, undefined, undefined]
相反,在密集数组上执行相同的操作相同长度的数组(没有未定义元素的数组)按预期工作:
var y = [undefined, undefined, undefined]; y.map(function() { return 0; }); // [0, 0, 0]
这种区别源于 new Array(count) 创建稀疏数组的事实数组,这意味着它不会为其元素分配默认值。因此,map() 无法对未定义的元素执行任何操作,从而产生未定义值的数组。
要解决此问题,您可以使用文字数组语法来创建密集数组或显式填充使用 Array.prototype.fill().
等方法具有所需默认值的稀疏数组以上是为什么'map()”在使用'new Array(count)”创建的数组上返回未定义的值?的详细内容。更多信息请关注PHP中文网其他相关文章!