以下是我尝试创建2D数组的方法:
var data = new Array(10);
//一个长度为10的数组,所有元素都未定义
var twoDArray = data.map(function (d){
return new Array(20); // expected to be 2d array, but 10 elements all undefined
});
但是现在如果我执行以下操作,我会得到预期的结果:
var data = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9];
var twoDArray = data.map(function (d){
return new Array(20);
});
答案 0 :(得分:2)
这是因为.map
不会迭代值,因为它们都是undefined
。
您可以使用:
Array.apply(null, Array(10)).map(function() {
return new Array(20);
});
答案 1 :(得分:1)
来自MDN:
map按顺序为数组中的每个元素调用一次提供的回调函数,并从结果中构造一个新数组。仅为已分配值的数组的索引调用回调; 未调用未定义的索引,已删除的索引或从未分配过值的索引。
因此,您无法将map
与数组中的undefined
一起使用。