2016-10-02 3 views
0

Ich versuche, Funktionen höherer Ordnung zu verwenden, um ein 3x3 2d Array zu füllen. Um genau zu sein, muss ich array.map Funktion verwenden, um dies zu beenden. so weit mein Code ist:Höherwertige Funktionen in Javascripts

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])); 
      }); 
     }); 

Es gibt keine Ausgabe, wenn ich versuche, Restaurants anzuzeigen. es scheint wie der Code bei

function(row,i){} 

gestoppt und wird nicht weiter gehen.

Wie kann ich das beheben? Jede Hilfe wird geschätzt.

Edit: Ich versuche ein 2D-Array mit Objekt BorderedCell zu füllen. Mein Problem ist, dass ich nicht weiß, wie man mit Double Mapping die gesamte Matrix durchläuft, was ich tun sollte.

+0

es scheint, dass Sie an der Stelle erwähnt 'Funktion (Zeile, i) {}' Reihe ist ein leeres Array (dh '[]') so mapping, dass nicht zu viel von irgendetwas führen wird ... –

+0

Was ist das erwartete Ergebnis von 'Matrix (3,3)'? – guest271314

Antwort

0

Wenn erwartete Ergebnis restaurants ist [[0,1,2],[0,1,2],[0,1,2]] Sie Array.from() verwenden können, 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);