正如标题所说,为什么我不能映射包含undefined
项的数组?
var foo = new Array(3);
// [ , , ]
var bar = [null, null, null];
// [null, null, null]
foo.map(function(val){return 'test'});
// [ , , ]
bar.map(function(val){return 'test'});
// ['test', 'test', 'test']
也许是愚蠢的问题,但我真的想知道原因。
感谢。
答案 0 :(得分:1)
来自MDN:
map按顺序为数组中的每个元素调用一次提供的回调函数,并从结果中构造一个新数组。仅对已分配值的数组的索引(包括undefined)调用回调。它不会被调用缺少数组的元素(即,从未设置过的索引,已删除的索引或从未赋值的索引)。
答案 1 :(得分:1)
仅对已分配值的数组的索引调用
callback
,包括undefined
。它不会被调用缺少数组的元素(即,从未设置过的索引,已删除的索引或从未赋值的索引)。
它不起作用,因为元素尚未赋值。
如果您使用
foo[0] = undefined;
foo[1] = undefined;
foo[2] = undefined;
然后它会起作用。