为什么我不能将new Array(3)映射到一个包含新值的数组?
Why can't I map new Array(3) into an array of new values?
我想了解一下为什么背后的原因:
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()不为未定义值的索引调用回调。
From MDN docs:
map为对象中的每个元素调用一次所提供的回调函数数组,并根据结果构造一个新数组。回调仅对已赋值的数组索引调用;对于未定义的索引不调用已被删除或从未被赋值。
相关文章:
- Angular js-返回一个包含类似
- 如何创建一个包含许多数组和数据的json对象
- jQuery.load()是另一个包含prism.js的页面
- 在Django中,可以在视图中创建一个包含js的变量,然后在循环模板标记中使用它
- 在Knockout js中创建一个包含多行的表,而不需要推送
- 使用video-js构建一个包含字符串的HTML视频
- 如何使用d3.layout.cloud.js创建一个包含单词及其权重的csv的单词云
- 如何使用Typescript创建一个包含对象的字段的新对象
- 从chrome扩展创建一个包含POST数据的链接
- Javascript:如何制作一个包含4个具有相同属性的对象的数组
- post-router的req.body包含新行和冒号
- JS函数返回一个包含对象的数组
- 编写一个包含一个大写字母和六个数字的javascript表达式
- 我正在从API提取一个包含视频的Object标签.如何在javascript中暂停视频
- 我该如何在Rails中使下拉列表重定向到另一个包含特定信息的页面
- 如何对姓氏进行排序,格式化电话号码,并返回一个包含对象数组值的字符串
- 猫鼬创建一个包含分类子文档的新文档
- 如何在字符串中查找子字符串,并返回一个包含子Javascript周围多个字符的新字符串
- 弹出一个包含javascript内容的新窗口
- 为什么我不能将new Array(3)映射到一个包含新值的数组?