首页 > web前端 > js教程 > 为什么使用'map()”时'new Array(count)”的行为与数组文字不同?

为什么使用'map()”时'new Array(count)”的行为与数组文字不同?

DDD
发布: 2024-12-13 11:53:13
原创
187 人浏览过

Why Does `new Array(count)` Behave Differently from Array Literals When Using `map()`?

为什么数组创建会影响数组转换?

在某些环境中,使用 new Array(count) 创建数组会出现意外行为地图方法。与使用文字语法(例如,[undefined, undefined, undefined])创建的数组不同,通过 new Array(3) 构造的数组不会使用 map 正确转换其元素。

此行为归因于未填充的数组。使用 new Array(count) 创建数组时,生成的数组的元素保持未定义状态。这与使用文字语法创建的数组不同,后者会自动用 undefined 初始化元素。

要解决此问题并确保映射正确运行,建议使用任何值填充数组元素,例如 undefined ,在尝试转换之前。 Array.prototype.fill() 方法可用于此目的。

例如,使用 new Array(count) 和 map 创建前 10 个整数的数组:

let arr = new Array(10).fill(undefined).map((val, idx) => idx);
登录后复制

这将产生所需的输出:

[0,1,2,3,4,5,6,7,8,9]
登录后复制

以上是为什么使用'map()”时'new Array(count)”的行为与数组文字不同?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板