1UnitedPower: Arrays

Beitrag lesen

Meine Herren!

Ich kenne mich nicht so gut mit javascript aus.

Für den Anfang solltest du dich mit dem Unterschied zwischen Java und JavaScript vertraut machen, das lässt unsereiner nicht ganz so blöd dastehen, wenn wir eine Frage haben ;)

var InPr = [ [0.0, 85.0], [10.0, 87.4], [20.0, 90.0], [30.0, 91.3] ]

  

> Ist das ein zweidimensionales Array oder ein zweidimensionales Array in einem anderen Array?  
  
Das ist ein zweidimensionales Array. Anders formuliert: Das ist ein Array, dessen Einträge wiederum aus Arrays bestehen. Die Dimension kannst du ermitteln indem du die öffnenden eckigen Klammern zählst, bis eine schließende Klammer auftauch.  
  
Du hast dich verwirren lassen, weil die inneren Arrays (zum Beispiel `[0.0, 85.0]`{:.language-javascript}) aus zwei Einträgen bestehen. Aber die Anzahl der Einträge hat nichts mit der Dimension zu tun.  
  
Hier ist ein Beispiel für ein Array, der Dimension 3 und mit 1 Element: `[[[42]]]`{:.language-javascript}  
Und hier ist ein Array der Dimension 1 mit 3 Elementen: `[0,1,2]`{:.language-javascript}  
  
Ich hoffe der Unterschied wird deutlich.  
  

> Wie kann man die Variable "InPr" in einer Schleife am besten füllen?  
  
Da gibt es verschiedene Ansätze mit unterschiedlichen Vor- und Nachteilen, für dich ist vermutlich eine einfache for-Schleife die passende Wahl:  
  
~~~javascript
for ( var i = 0; i < InPr.length; i++ ) {  
   InPr[ i ] = 42; // Oder was immer du willst  
}

Die Schleife würde 4 mal ausgeführt werden. Für jedes innere Array im äußeren Array genau ein mal.

Wenn du lieber eine Schleife haben willst, die einmal jeden Eintrag in jedem inneren Array besucht, dann kannst du auch zwei Schleifen verschachteln:

for ( var i = 0; i < InPr.length; i++ ) {  
   var inneresArray = InPr[ i ]; // Zum Beispiel: [0.0, 85.0] oder [10.0, 87.4]  
   for ( var j = 0; j < inneresArray.length; j++ ) {  
      var einzelnerEintrag = inneresArray[ j ]; // zum Beispiel 0.0 oder 85.0 oder 10.0  
      alert( einzelnerEintrag ); // Test-Ausgabe, um zu sehen was passiert  
      inneresArray[ j ] = 42; // Oder eine Zuweisung deiner Wahl  
  
   }  
}

Eine ganz andere Methode, wäre die Methode forEach zu nutzen:

InPr.forEach( function( wert, i, array ) {  
   // i ist wieder eine Zählvariable, die die Postion im Array angibt  
   // wert sind wieder die Einträge des äußeren Array, also z.B: [0.0, 85.0]  
   // array ist das äußere Array selber.  
   array[ i ] = 42; // Oder was immer dir gefällt.  
});

Analog zu der Schleife, lässt sich auch dieser Ansatz erweitern, um jedes einzelne Zahl zu erreichen:

InPr.forEach( function( äußererWert, i, äußeresArray ) {  
   äußererWert.forEach( function ( innererWert, j, inneresArray ) {  
      // inneresArray ist hier das gleiche wie äußererWert  
      alert( innererWert ); // Test-Ausgabe, um zu sehen was passiert.  
   });  
});

Wenn dir das noch zu kompliziert vorkommt, mach dir erstmal nichts draus und kümmere dich zu erst mal um die Version mit der for-Schleife ;)

--
“All right, then, I'll go to hell.” – Huck Finn