2016-10-02 104 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);