首页 >web前端 >js教程 >为什么'map()”在使用'new Array(count)”创建的数组上返回未定义的值?

为什么'map()”在使用'new Array(count)”创建的数组上返回未定义的值?

Patricia Arquette
Patricia Arquette原创
2024-12-07 07:00:12742浏览

Why Does `map()` Return Undefined Values on Arrays Created with `new Array(count)`?

理解使用 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中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn