Elsa: Arrays per Schleife erzeugen bzw überschreiben

Hallo Ihr alle!
Ich habe hier ein Problem mit einer Schleife:

if (i == 0) {
  planen[i] = new Array(id,persnr,abwmerkmal,datum);
  i++;
  }

else {
   var z = planen.length-1
   for (y=0;y<=z;y++){
       while  (datum != planen[y][3]) {
            planen[i] = new Array(id,persnr,abwmerkmal,datum);
            i++;
            break;
        }
   }
}

Array sollen erzeugt werden (über einen onClick-Eintrag, hier jetzt irrelevant). Dort, wo bereits für einen Tag (datum bzw. planen[][3]) besteht, soll das Array direkt überschrieben werden. Wenn das Datum noch frei ist, dann soll am Ende der Schleife ein neues Array angehängt werden.
Momentan wird bei jedem Schleifendurchlauf ein Array erzeugt, wenn das Datum noch nicht verwendet wurde. Ich stelle mich wahrscheinlich etwas blöd an, finde aber momentan einfach keine Lösung...

In der Hoffnung mich einiger Maßen klar ausgedrückt zu haben und für jede Hilfe super-dankbar
Elsa

  1. for (y=0;y<=z;y++){
           while  (datum != planen[y][3]) {
                planen[i] = new Array(id,persnr,abwmerkmal,datum);
                i++;
                break;
            }
       }

    Momentan wird bei jedem Schleifendurchlauf ein Array erzeugt, wenn das Datum noch nicht verwendet wurde.

    Willst Du nicht eigentlich wissen, ob es in planen ein Array mit dem 4. Element==datum gibt? Dann müßtest Du erst durch das Array loopen und ein Flag umschießen, wenn Du das Element gefunden hast. Wenn das Flag den Ursprungswert hat, dann hängst Du an planen ein neues Array an.

  2. Hallo Ihr alle!
    Ich habe hier ein Problem mit einer Schleife:

    if (i == 0) {
      planen[i] = new Array(id,persnr,abwmerkmal,datum);
      i++;
      }

    else {
       var z = planen.length-1
       for (y=0;y<=z;y++){
           while  (datum != planen[y][3]) {
                planen[i] = new Array(id,persnr,abwmerkmal,datum);
                i++;
                break;
            }
       }
    }

    Array sollen erzeugt werden (über einen onClick-Eintrag, hier jetzt irrelevant). Dort, wo bereits für einen Tag (datum bzw. planen[][3]) besteht, soll das Array direkt überschrieben werden. Wenn das Datum noch frei ist, dann soll am Ende der Schleife ein neues Array angehängt werden.

    sinnvollerweise benutzt du ein assoziatives Array dafür:

    planen[datum] = new Array(id,persnr,abwmerkmal);

    Das kann man checken wenn man muss:
    if(!planen[datum]) planen[datum] = new Array(id,persnr,abwmerkmal);

    Hat aber denn Nachteil, das du nicht mehr an Länge des Arrays kommst und die Schleifen sehen dann so aus:

    for(var datum in planen)
    {
        alert(datum + ':' + planen[datum]);
    }

    Struppi.

    1. Ich habe es jetzt ganz abenteuerlich mit einer if-Abfrage in der Schleife hinbekommen! Herzlichen Dank für Eure Hilfe. Mentale Unterstützung beflüglt...

      for (y=0;y<=z;y++) {
                /*alert("in 71 z = "+z);
                alert(datum +" = datum");
                alert(planen[y][3] + " = planen-Eintrag");*/

      if(datum != planen[y][3]) {
                 wechsel=true;
                 alert(datum +" != " +planen[y][3]);
                 //break;
                 }

      if(datum == planen[y][3]){
                wechsel = false;
                alert(datum+" == " +planen[y][3]);
                alert(planen[y]);
                delete planen[y];
                planen[y] =new Array(id,persnr,abwmerkmal,datum);
                alert("neues Array = " +planen[y]);
                break;
          }
          //return wechsel;
         }

      Elsa