使用map方法创建多维数组:javascript

时间:2014-08-22 09:37:46

标签: javascript arrays multidimensional-array undefined

以下是我尝试创建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);
});

2 个答案:

答案 0 :(得分:2)

这是因为.map不会迭代值,因为它们都是undefined

您可以使用:

Array.apply(null, Array(10)).map(function() {
   return new Array(20);
});

答案 1 :(得分:1)

来自MDN

  

map按顺序为数组中的每个元素调用一次提供的回调函数,并从结果中构造一个新数组。仅为已分配值的数组的索引调用回调; 未调用未定义的索引,已删除的索引或从未分配过值的索引。

因此,您无法将map与数组中的undefined一起使用。