2017-07-21 11 views
-2

Ein bisschen ein JS n00b, gerade erst anfangen und so, und ich habe zur Zeit eine verschachtelte Array, das ich will Werte leicht ändern in.Ist es möglich, über verschachtelte Arrays mit Pfeilfunktionen zu iterieren?

var rects = [[new Rect, new Rect, new Rect, new Rect, new Rect], 
      [new Rect, new Rect, new Rect, new Rect, new Rect]] 

Jetzt weiß ich, dass ich immer

for(let i = 0; i < rects.length; i++){ 
    for(let j = 0; j < rects[i].length; j++{ 
     rects[i][j].pos.x = 30; 
     rects[i][j].pos.y = 30; 
    } 
} 
tun könnte

aber ich habe mich gefragt, ob ich (mangels einer besseren Formulierung) verschachtelt Pfeil Funktionen so etwas wie

rects.forEach(rect => { 
    rect.forEach(thing => { 
     thing.pos.x = 30; 
     thing.pos.y = 30; 
    }); 
}); 

und haben die gleiche Wirkung wie die für lo zu tun verwenden könnte Op oben? Sie sehen einfach viel sauberer aus und mein Code sieht wie ein Rattennest aus Englisch aus.

+5

Der beste Weg, um diese Art von Frage zu beantworten, ist es zu versuchen und zu sehen, ob es funktioniert. Es gibt keinen Grund, einen Haufen Fremder im Internet zu fragen :). –

+0

Ich würde map statt forEach verwenden, weil es ein neues Array zurückgibt, aber es ist nur eine persönliche Vorliebe – Roman

Antwort

-1

Kurz gesagt: ja du kannst. Wenn Sie es versucht haben und Fehler bekommen, wäre das eine separate und nützlichere Frage.

+0

Verwende ich die korrekte Syntax in diesem Beispiel? Weil, wenn ich versuche, genau diese "verschachtelte Pfeilfunktion" in meinem Code zu machen, passiert nichts. –

+1

Woher weißt du, dass nichts passiert? Was sind die Werte von 'rects' bevor und nachdem deine Funktion ausgeführt wird? Fügen Sie einige 'console.log' Anweisungen hinzu, um all dies zu testen. – Cass

-1

Eine Technik, die in jeder Version von JS funktioniert, ist die Verwendung der for-Schleife, um einen Verweis auf das Objekt zu erhalten, mit dem Sie arbeiten möchten. Sie müssen vorsichtig sein, wenn Sie Arrays mit falschen Werten verwenden, was in Ihrem Beispiel nicht der Fall ist.

for (var i = 0, r; r = rects[i]; i++) { 
    for (var j = 0, thing; thing = r[j]; j++) { 
     thing.pos.x = 30; 
     thing.pos.y = 30; 
    } 
} 
Verwandte Themen