for-Schleifen in Javascript verschachtelt ich JavaScript im Moment auf freecodecamp lernen und sie haben ein Beispiel für in einem ihrer excercises für Schleifen verschachtelt:Legendes
var arr = [[1,2], [3,4], [5,6]];
for (var i=0; i < arr.length; i++) {
for (var j=0; j < arr[i].length; j++) {
console.log(arr[i][j]);
}
}
Mit console.log = 1 2 3 4 5 6 undefiniert.
Ich verstehe für Schleifen mehr oder weniger, und ich verstehe, dass [i] und [j] verwendet werden, um auf das Array zugreifen (denke ich?). Ich verstehe einfach nicht, warum am Ende nur diese Zahlen ausgedruckt werden? Ich fand diese Frage vor ein paar Jahren fragte zurück, aber es erklärt, wie sie zu schreiben, nicht, wie sie funktionieren:
For loop in multidimensional javascript array
ich es brach in:
var arr = [ [1,2], [3,4], [5,6]];for (var i=0; i < arr.length; i++) {
console.log(arr[i]);}
Welche heraus druckt
[ 1, 2 ]
[ 3, 4 ]
[ 5, 6 ]
undefined
und
var arr = [ [1,2], [3,4], [5,6]];
for (var i=0; i < arr.length; i++) {
for (var j=0; j < arr[i].length; j++) {
console.log(arr[i]); }}
die ausdruckt:
[ 1, 2 ]
[ 1, 2 ]
[ 3, 4 ]
[ 3, 4 ]
[ 5, 6 ]
[ 5, 6 ]
undefined
und
var arr = [ [1,2], [3,4], [5,6]];
for (var i=0; i < arr.length; i++) {
for (var j=0; j < arr[i].length; j++) {
console.log(arr[j]); }}
die ausdruckt
[ 1, 2 ]
[ 3, 4 ]
[ 1, 2 ]
[ 3, 4 ]
[ 1, 2 ]
[ 3, 4 ]
undefined
ich die ersten beiden arr verstehen [i]. Die Schleife iteriert durch das Array und druckt die einzelnen Elemente (in diesem Fall ein Array) aus und in der zweiten, denke ich, macht es das einfach zweimal, weil es zwei Schleifen gibt. Was ich nicht verstehe, ist:
- , warum die letzte Reihe in arr [j] nicht ausgedruckt (? Wo ist die [5, 6] gehen)
- warum arr [i] [j ] eliminiert plötzlich die Arrays und nur druckt die Zahlen
- wo das kommt mit diesem von
Könnte jemand mir helfen, out ‚undefined‘ und die Schritte erläutern den Code dauert es vor dem Drucken in der Konsole aus? Ich würde es wirklich gerne verstehen, aber ich weiß nicht einmal, wie ich diese Frage richtig finden soll.
Mach dir keine Sorgen über das 'undefined' am Ende; Das ist ein Nebenprodukt davon, wie 'console.log()' den Code interpretiert. – Pointy
Das stimmt nicht. Spitze. Der Grund dafür, dass stellatores am Ende undefiniert wird, liegt darin, dass er i auf der letzten for-Schleife inkrementiert, bevor er die j-Schleife trifft, um die Bedingung zu treffen. For-Schleifen werden immer nur einmal ausgeführt und nur angehalten, wenn eine Bedingung erfüllt ist. In diesem Fall drückt die letzte Schleife i auf 7, und in der Zahlenmatrix gibt es keine 7. Position. Dies führt zu undefiniertem, weil der Array-Position einfach keine Nummer zugewiesen ist. – Korgrue
@ Korgrue nein, Pointy ist richtig. Die i-Schleife läuft nur von 0 bis 2, bevor sie endet. Das 'undefined' ist der Rückgabewert der' for' Anweisung. 'console.log ('Hi')' macht dasselbe: Es gibt 'Hi' und dann undefined aus. – Stuart