javascript - 为什么我不能将 new Array(3) 映射到新值数组中?

标签 javascript arrays

<分区>

我想了解这背后的原因:

var a = new Array(3);
var b = a.map(function () {
  return 'b';
});

结果

a: [ , , ]

b: [ , , ]

当我希望 b 产生 ['b', 'b', 'b'] 时。


在进一步调查中,我发现如果我要执行 a.push('a'),我会有 [, , , 'a'] .

在 map 函数之后,b 将变为 [, , , 'b']

这是怎么回事?为什么这些分配的单元格的行为与初始化不同?我原本希望它的行为就像它是数组文字时那样,[undefined, undefined, undefined].map(fn)

最佳答案

Array.map() 不会为未定义值的索引调用回调。

来自 MDN 文档:

map calls a provided callback function once for each element in an array, in order, and constructs a new array from the results. callback is invoked only for indexes of the array which have assigned values; it is not invoked for indexes that are undefined, those which have been deleted or which have never been assigned values.

关于javascript - 为什么我不能将 new Array(3) 映射到新值数组中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31737901/

相关文章:

javascript - svelte如何在日期和待办事项文本之间留空格?

javascript - Socket.io 不会在我的 React 应用程序中的浏览器后退按钮上触发断开连接

javascript - ASP.NET MVC - Javascript 数组总是作为 null 传递给 Controller

javascript - 在 div 单击上推送到数组

javascript - Google map API v3 对多个地址进行地理编码

javascript - 有没有办法在移动浏览器上强制用两根手指滚动?

javascript - 使用 jQuery 选择变量中的内容而不是当前 DOM 中的内容?

c - qsort : Sort 1 Dimension of 3D array in C

php - 如何在 PHP 中减少数组的内部数组值?

php - 当在某些情况下无法分隔点分隔符时,如何使用点分隔符拆分文本