Javascript Verschachtelte for-Schleife mit ES6
Ich Jungs, ich habe eine verschachtelte for-Schleife, aber ich möchte es mit einem Array anzeigen/ES6 Weg, aber wie funktioniert das mit den verschachtelten forloops?
for (var i = 0; i < enemy.ships.length; i++) {
for (var n = 0; n < enemy.ships[i].location.length; n++) {
if (obj.coordination == enemy.ships[i].location[n]) hit = true;
}
};
Ich wissen, wie es zu tun, wenn es da nicht ein forloop
players.map(function(player){if(player.id != socket.id) return enemy = player});
Aber ich kann nicht scheinen, um zu verstehen, wie es sein sollte mit einem Array von Karten oder etwas anderes.
Muss ich mit dem Standort der Schiffe, Standort & obj.die Koordination. Dies ist der Feind.Schiffe, die variable, die ich brauche, um zu überprüfen
[ { type: 'Aircaft',
size: 5,
rekt: false,
available: 1,
location: [] },
{ type: 'Battleship',
size: 4,
rekt: false,
available: 1,
location: [ 77, 76, 75, 74 ] },
{ type: 'Destroyer',
size: 3,
rekt: false,
available: 2,
location: [ 54, 44, 34 ] },
{ type: 'Submarine',
size: 3,
rekt: false,
available: 3,
location: [] },
{ type: 'Patrolboat',
size: 2,
rekt: false,
available: 4,
location: [] } ]
- Verwenden Sie eine verschachtelte
forEach
Schleife - Sollten Sie ein Beispiel der Daten mit dem Sie arbeiten.
- Gerade das Beispiel der Daten
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn alles, was Sie suchen, egal ob alle Lage auf alle Schiff passt (und nicht wieder das Schiff, das getroffen wurde, et cetera), die Sie verwenden können, so etwas wie:
Wenn Sie zurückkehren wollte, für das Schiff, das getroffen wurde (oder die Schiffe, wenn mehrere Schiffe durften den gleichen Koordinaten):
Ihrem Beispiel zu
map
ist auch ein wenig... off.Dem Ziel
map
nicht verursachen Seite-Effekte (in der Tat, es ist speziell gedacht, um zu vermeiden, alle Nebenwirkungen).Das Ziel der
map
ist ein array von Objekten und zurück eine Marke neues array mit der gleichen Länge, wo Sie ausgefüllt haben, wird das neue array auf der Basis der Objekte des alten Arrays.Wenn Sie nur wollen, um zu überprüfen, jedes Element und verursachen Seite-Effekte (ändern Sie einen Wert, existiert außerhalb der Funktion übergeben), verwenden Sie
forEach
.Könnten Sie die
forEach
Methode, um es in ein mehr funktionale Weise. Aber Sie werden nicht in der Lage zu brechen, wenn die Lage passt.Zusätzliche ref: wie zu stoppen Javascript forEach?
every()
. Verweis: developer.mozilla.org/pt-BR/docs/Web/JavaScript/Reference/...every()
.some()
ist die richtige option für diesen Fall 🙂Könnte man Arrays verwendet werden.der Prototyp.Suche und filter:
Beispiel: