2014-04-02 4 views
5

Ich habe ein großes, mehrdimensionales Array von JSON-Objekten, die ich zuordnen möchte (mit Underscore). Zum Beispiel:Wie wird ein mehrdimensionales Array (mit Underscore) abgebildet?

var dummyData = [ 
    [{title: 'a'},{title : 'b'}], 
    [{title: 'a'},{title : 'b'}], 
    [{title: 'a'},{title : 'b'}], 
    [{title: 'a'},{title : 'b'}] 
]; 

Für die Funktion Körper des _.map, möchte ich jedes JSON-Objekt durch ein Backbone Modell Konstruktor auszuführen. Bisher habe ich versucht, so etwas wie dies, dies zu erreichen:

_.map(dummyData, function() { 
    _.each(dummyData, function(el, i) { 
     // run each object through the constructor 
    } 
}) 

Ich bin immer auf der _.each gefangen, obwohl - da dummyData ist eigentlich nicht die ‚Liste‘, die ich durch eine Schleife möchten.

Oder denke ich über diesen Fehler insgesamt nach?

+0

Wollen Sie das Ergebnis ein Array von Arrays, wie Sie Ihre Eingabe sein? – thefourtheye

+0

Ja. Genau wie die Eingabe, aber jedes Objekt wäre ein Backbone-Modell. – GloryOfThe80s

Antwort

9

Iterieren über die Elemente von dummyData mit _.map ähnliche

_.map(dummyData, function(currentDummyData) { 
    return _.map(currentDummyData, function(el, i) { 
     // run each object through the constructor 
    }) 
}); 

dummyData ist ein Array von Arrays. Wenn Sie _.map damit verwenden, nimmt es jedes Array in dem Array von Arrays auf und übergibt an die Funktion, die wir mit function(currentDummyData) {..} akzeptieren.

Innerhalb dieser Funktion, wir wieder _.map dieses Array, weil es immer noch ein Array ist. Also, wir iterieren das, um einzelne Elemente zu erhalten und sie an die Funktion function(el, i) {..} zu übergeben, wo neue Backbone-Modelle erstellt werden.

Hinweis: Sie müssen das Ergebnis von _.map zurückgeben, wie in der Antwort. Denn _.map erwartet die aufgerufene Funktion, um ein Objekt zurückzugeben, und alle zurückgegebenen Objekte werden gesammelt, um ein neues Array zu erstellen.

Zum Beispiel wird

console.log(_.map(dummyData, function(currentDummyData) { 
    return _.map(currentDummyData, function(el, i) { 
     return {title: el.title + el.title}; 
    }) 
})); 

produzieren

[ [ { title: 'aa' }, { title: 'bb' } ], 
    [ { title: 'aa' }, { title: 'bb' } ], 
    [ { title: 'aa' }, { title: 'bb' } ], 
    [ { title: 'aa' }, { title: 'bb' } ] ] 
Verwandte Themen