2016-10-02 107 views
0

我正在尝试使用高阶函数来填充3x3 2d数组。具体来说,我需要使用array.map函数来完成此操作。到目前为止我的代码是:Javascript中的高阶函数

function Matrix(m,n){ 
     var mat = Array.apply(null, new Array(m)).map(
     Array.prototype.valueOf, 
     new Array(n) 
    ); 
    return mat; 
    } 
    restaurants = Matrix(3,3); 
    restaurants.map(
     function(row,i){ 
     return row.map(function(cell,j){ 
      return new BorderedCell(ToString(ancestry[i][j])); 
      }); 
     }); 

当我尝试显示餐厅时没有输出。它似乎代码停止在

function(row,i){} 

并且不会再继续。

我该如何解决这个问题?任何帮助将不胜感激。

编辑:我想用对象BorderedCell填充2D数组。我的问题是我不知道如何使用双映射来遍历整个矩阵,我应该这样做。

+0

似乎在现场你提到'函数(行,I){}'行是一个空数组(即'[]')映射,这将不会导致任何事情... –

+0

'Matrix(3,3)'的预期结果是什么? – guest271314

回答

0

如果restaurants预期结果是[[0,1,2],[0,1,2],[0,1,2]]可以使用Array.from()Array.prototype.keys()

function arr(len) { 
 
    return Array.from(Array(len).keys()) 
 
} 
 

 
function Matrix(m, n) { 
 
    return arr(m).map(arr.bind(null, n)); 
 
} 
 

 
var restaurants = Matrix(3, 3); 
 

 
console.log(restaurants);