magges151: Arrays addieren

Hallo zusammen!

Ich versuche krampfhaft, den Inhalt von Arrays in einer Funktion zu addieren, ungefähr so:

var Mayer1 = new Array(1,4,7,2);
var Mayer2 = new Array(5,2,9,13);

// natürlich ginge jetzt:

var Summe = Mayer1[2] + Mayer2[2];

Aber das Ganze soll in einer Schleife sein, dass quasi die Zahl im Variablennamen (die 1 bei Mayer1) mit i verbunden ist. Die Arrayposition ist übrigens immer die gleiche (also immer [2])...

for (i=1 ; i<=18 ; i++){
 // und jetzt??? wie bekomme ich die Addition der Arraywerte hin?
}

Kurze Erläuterung noch: Ich weiß, das schreit nach php (oder zumindest nach Datenbank), aber zum Einen lässt 1und1 Datenbanken nicht zu und zum Anderen kann ich sowas auch (noch) nicht - deswegen Javascript! Ziel ist es, Tabellen zu erschaffen, in denen die Statistiken einzelner Basketballspieler angezeigt werden, und zwar von allen Spieltagen die Punkte addiert, die Rebounds addiert, etc...

Villeicht kann mir jemand weiterhelfen, danke dafür schonmal!!

  1. for (i=1 ; i<=18 ; i++){
     $array3[$i] = Mayer1[$i] + Mayer2[$i];
    }

    1. for (i=1 ; i<=18 ; i++){
      $array3[$i] = Mayer1[$i] + Mayer2[$i];
      }

      Sorry, falsche Syntax. Aber im Prinzip trotzdem richtig, würde ich annehmen

  2. var Mayer1 = new Array(1,4,7,2);
    var Mayer2 = new Array(5,2,9,13);

    // natürlich ginge jetzt:

    var Summe = Mayer1[2] + Mayer2[2];

    Aber das Ganze soll in einer Schleife sein, dass quasi die Zahl im Variablennamen (die 1 bei Mayer1) mit i verbunden ist. Die Arrayposition ist übrigens immer die gleiche (also immer [2])...

    for (i=1 ; i<=18 ; i++){
    // und jetzt??? wie bekomme ich die Addition der Arraywerte hin?
    }

    Im Prinzip wäre das eher ein zweidimensonales Array was die einfacher Lösung ist.

    So wie du es jetzt willst würde es so gehen:

    for (i=1 ; i<=18 ; i++){
    window['Mayer' + i][2]
    }

    Wobei ich nicht weiß zu welchem Wert du das addieren möchtest.

    Struppi.

    1. Im Prinzip wäre das eher ein zweidimensonales Array was die einfacher Lösung ist.

      Ja, genau! Ein zweidimensionales Array!

      So wie du es jetzt willst würde es so gehen:

      for (i=1 ; i<=18 ; i++){
      window['Mayer' + i][2]
      }

      Wobei ich nicht weiß zu welchem Wert du das addieren möchtest.

      Also ich bin jetzt soweit:

      ----------------------------------------------------------

      <script type="text/javascript">
      <!--

      /* Schema: Name , Games , Starter , FGM , FGM-A , 3PTM , 3PM-A , FTM , FTM-A , Off , Def , Tot , Ast , Stl , Blk , To , Pf , Pts */

      // st ist der Spieltag!

      function Bechmann() {

      var st1 = new Array(9,6,7,18,2,9,3,7,8,18,26,0,2,1,3,1,23);
      var st2 = new Array(4,7,18,2,9,3,7,8,18,26,0,2,1,3,1,23,2);
      var summe = 0;

      for (var i = 0 ; i <= 16 ; i++){
        for (var y = 1 ; y <= 2 ; y++){
         summe = window['st' + y][i];
         alert(summe);
        }
       }
      }

      //-->
      </script>

      ------------------------------------------------

      Aber leider tut sich gar nichts...
      Anstelle von "alert();" kommt dann eine mit "document.write" erzeugte Tabelle, aber das ist weniger das Problem! ;-)

      Danke schonmal!!!!!!!!!!!!!!!!!!!!

      1. Hallo magges151

        Im Prinzip wäre das eher ein zweidimensonales Array was die einfacher Lösung ist.

        Ja, genau! Ein zweidimensionales Array!

        Ich vermute du willst sowas:

        function Bechmann() {  
          
        var st = [  
        [9,6,7,18,2,9,3,7,8,18,26,0,2,1,3,1,23],  
        [4,7,18,2,9,3,7,8,18,26,0,2,1,3,1,23,2]  
        ];  
        var summe = 0;  
          
         for (var i = 0 ; i < st[0].length ; i++){  
          for (var y = 0 ; y < st.length ; y++){  
           summe += st[y][i];  
          }  
         }  
           alert(summe);  
        }
        

        Struppi.

      2. Hallo,

        Im Prinzip wäre das eher ein zweidimensonales Array was die einfacher Lösung ist.
        Ja, genau! Ein zweidimensionales Array!

        Ja, dann erstelle doch eins ;-)) (siehe unten).

        Also ich bin jetzt soweit:

        <script type="text/javascript">
        <!--

        /* Schema: Name , Games , Starter , FGM , FGM-A , 3PTM , 3PM-A , FTM , FTM-A , Off , Def , Tot , Ast , Stl , Blk , To , Pf , Pts */

        // st ist der Spieltag!

        function Bechmann() {

        var st1 = new Array(9,6,7,18,2,9,3,7,8,18,26,0,2,1,3,1,23);
        var st2 = new Array(4,7,18,2,9,3,7,8,18,26,0,2,1,3,1,23,2);

        // ^Die Variablen st1 und st2 liegen im scope (Gültigkeitsbereich) der Funktion Bechmann().

        var summe = 0;

        for (var i = 0 ; i <= 16 ; i++){
          for (var y = 1 ; y <= 2 ; y++){
           summe = window['st' + y][i];

        //            ^Hier sprichst Du eine Variable st1 bzw, st2 im scope von window an.
        //    Außerdem bekommt die Variable summe immer den jeweils aktuellen Wert von window.st1[i] bzw. window.st2[i] zugewiesen. Da wird nichts summiert. Ist das so gewollt?

        alert(summe);
          }
        }
        }

        //-->
        </script>

        Aber leider tut sich gar nichts...

        rufst Du denn die Funktion irgendwo auf?

        Vorschlag mit mehrdimensionalem Array:

          
        <script type="text/javascript">  
        <!--  
          
        /* Schema: Name , Games , Starter , FGM , FGM-A , 3PTM , 3PM-A , FTM , FTM-A , Off , Def , Tot , Ast , Stl , Blk , To , Pf , Pts */  
          
        // st ist der Spieltag!  
          
        function Bechmann() {  
          
        var st = new Array();  
        st[1] = new Array(9,6,7,18,2,9,3,7,8,18,26,0,2,1,3,1,23);  
        st[2] = new Array(4,7,18,2,9,3,7,8,18,26,0,2,1,3,1,23,2);  
        var summe = 0;  
          
         for (var i = 0 ; i <= 16 ; i++){  
          for (var y = 1 ; y <= 2 ; y++){  
           summe += st[y][i];  
           alert(summe);  
          }  
         }  
        }  
        Bechmann();  
        //-->  
        </script>  
        
        

        viele Grüße

        Axel

        1. Hey!

          Also Eure (Axel und Struppi) Vorschläge waren super, hab mit beiden sehr viel anfangen können, DANKE!

          Leider läuft das Programm immernoch nicht wie gewünscht...
          Die Schleifen werden nicht korrekt durchlaufen (vermute ich, Begründung im Quelltext), der Code ist jetzt soweit:

          --------------------------------------------------

          <script type="text/javascript">

          /* Schema: Name , Games , Starter , FGM , FGM-A , 3PTM , 3PM-A , FTM , FTM-A , Off , Def , Tot , Ast , Stl , Blk , To , Pf , Pts */

          var summe = 0;

          var Neli = new Array();
          Neli[1] = new Array(9,6,7,18,2,9,3,7,8,18,26,0,2,1,3,1,23);
          Neli[2] = new Array(2,6,18,2,9,3,7,8,18,26,0,2,1,3,1,23,2);

          document.write("<div align="center"><br><br>");
          document.write("<table class="thead"><tr><th><div class="h1">Statistik</div></th></tr></table>");
          document.write("<table width="85%"><tr><td>");
          document.write("<table width="100%" style="background-color:#CC0000;"><tr align="center">");
          document.write("<td class="m1"><div class="team"><b>Name</b></div></td>");
          document.write("<td class="m1"><div class="team"><b>Games</b></div></td>");
          document.write("<td class="m1"><div class="team"><b>Starter</b></div></td>");
          document.write("<td class="m1"><div class="team"><b>FGM</b></div></td>");
          document.write("<td class="m1"><div class="team"><b>FGM-A</b></div></td>");
          document.write("<td class="m1"><div class="team"><b>3PTM</b></div></td>");
          document.write("<td class="m1"><div class="team"><b>3PM-A</b></div></td>");
          document.write("<td class="m1"><div class="team"><b>FTM</b></div></td>");
          document.write("<td class="m1"><div class="team"><b>FTM-A</b></div></td>");
          document.write("<td class="m1"><div class="team"><b>Off</b></div></td>");
          document.write("<td class="m1"><div class="team"><b>Def</b></div></td>");
          document.write("<td class="m1"><div class="team"><b>Tot</b></div></td>");
          document.write("<td class="m1"><div class="team"><b>Ast</b></div></td>");
          document.write("<td class="m1"><div class="team"><b>Stl</b></div></td>");
          document.write("<td class="m1"><div class="team"><b>Blk</b></div></td>");
          document.write("<td class="m1"><div class="team"><b>To</b></div></td>");
          document.write("<td class="m1"><div class="team"><b>Pf</b></div></td>");
          document.write("<td class="m1"><div class="team"><b>Pts</b></div></td>");
          document.write("</tr>");
          document.write("<tr>");
          document.write("<td class="m3"><div align="left">Bechmann</div></td>");

          for (var i = 0 ; i <= Neli[1].length ; i++){
           for (var y = 1 ; y <= Neli.length ; y++){
            summe += Neli[y][i];
                          // ein alert(summe); an der Stelle wirft mir zweimal den richtigen Wert aus!!
           }
          // das alert(summe); an der Stelle bleibt tot...
          document.write("<td class="m3"><div align="right">" + summe + "</div></td>");
          summe = 0;
          }

          document.write("</tr>");
          document.write("</table></td></tr></table>");
          document.write("<div class="s1">Danke an Maddin f&uuml;r den Inhalt!</div>");
          document.write("</div>");

          //-->
          </script>

          -----------------------------------

          Wenn das klappt, dann müsste es laufen...

          Gruß, Markus

          1. Hallo,

            var Neli = new Array();
            Neli[1] = new Array(9,6,7,18,2,9,3,7,8,18,26,0,2,1,3,1,23);
            Neli[2] = new Array(2,6,18,2,9,3,7,8,18,26,0,2,1,3,1,23,2);

            alert(Neli[1].length);
            //Neli[1].length ist hier 17
            alert(Neli.length);
            //Neli.length ist hier 3, weil das Element 0 implizit angelegt ist, auch wenn Du es nicht nutzt.
            ...

            for (var i = 0 ; i <= Neli[1].length ; i++){

            //  i läuft von 0 bis 17

            for (var y = 1 ; y <= Neli.length ; y++){

            //  y läuft von 1 bis 3

            summe += Neli[y][i];

            //hier bricht das JavaScript bei Neli[3][0] ab [1].

            }
            }

            Die Festlegung, dass die Indexzählung in Arrays üblicherweise bei 0 beginnt, führt dazu, dass die Standardschleife zu Durchlaufen eines Arrays so aussieht:

            for (var iterator = 0 ; iterator < myArray.length ; iterator++){
               dosomethingwith(myArray[iterator]);
            }

            Da Du in Deinem Hauptarray Neli nur die Elemente 1 und 2 nutzt, lass hier die Schleife von 1 bis 2, also for (var y = 1 ; y < Neli.length ; y++), laufen.

            viele Grüße

            Axel

            1. Servus!

              Danke, Axel, genau das war es!!!! Die Schleifen funktionieren, die Arrays auch, perfekt!!!!!

              Falls es Dich interessiert, das Ergebnis kannst Du unter www.bball-zell.de sehen, oder direkt unter www.bball-zell.de/statistik.html

              Liebe Grüße, Markus

              Hallo,

              var Neli = new Array();
              Neli[1] = new Array(9,6,7,18,2,9,3,7,8,18,26,0,2,1,3,1,23);
              Neli[2] = new Array(2,6,18,2,9,3,7,8,18,26,0,2,1,3,1,23,2);
              alert(Neli[1].length);
              //Neli[1].length ist hier 17
              alert(Neli.length);
              //Neli.length ist hier 3, weil das Element 0 implizit angelegt ist, auch wenn Du es nicht nutzt.
              ...
              for (var i = 0 ; i <= Neli[1].length ; i++){
                      //  i läuft von 0 bis 17
              for (var y = 1 ; y <= Neli.length ; y++){
                       //  y läuft von 1 bis 3
                summe += Neli[y][i];
                            //hier bricht das JavaScript bei Neli[3][0] ab [1].
              }
              }
              Die Festlegung, dass die Indexzählung in Arrays üblicherweise bei 0 beginnt, führt dazu, dass die Standardschleife zu Durchlaufen eines Arrays so aussieht:

              for (var iterator = 0 ; iterator < myArray.length ; iterator++){
                 dosomethingwith(myArray[iterator]);
              }

              Da Du in Deinem Hauptarray Neli nur die Elemente 1 und 2 nutzt, lass hier die Schleife von 1 bis 2, also for (var y = 1 ; y < Neli.length ; y++), laufen.

              viele Grüße

              Axel