Paparatzi: Array neu durchzählen

Liebe Community,

ich bin einwenig am verzweifeln und möchte den ganzen kram am liebsten in die ecke schmeissen, 2 wochen versuche ich mich an dem folgenden problem...

Ich möchte einen mehrdimensionalen Javascript-Array neu durchnummerien:

Der Array ist wie folgt aufgbaut:

key/objekt/tag/station/substation

  
werte[0][object][1][0][0]  
werte[1][object][1][1][0]  
werte[2][object][2][0][0]  
werte[3][object][2][1][0]  
werte[4][object][2][1][1]  
werte[5][object][2][1][2]  
werte[6][object][3][0][0]  
werte[7][object][3][1][0]  
werte[8][object][3][2][0]  
werte[9][object][3][2][1]  
werte[10][object][3][2][2]  
werte[11][object][4][0][0]  

Wenn nun ein Tag gelöscht wird, sollen alle folgenden Tage neu durchnummeriert werden, also wird  zum Bsp. Tag 2 gelöscht müssen alle Stationen/Substationen von Tag 3 auf Tag 2 gelegt werden, und von Tag 4 auf Tag 3. Wenn eine Station innerhalb eines Tages gelöscht wird rutschen die Folgestationen jeweils einen Zähler vor, wobei dann der Tag gleich bleibt.
Bei den Substationen ist es ähnlich. Hier beleiben dann Tag und Station gleich.
Die einzelnen Werte werden mit "splice", gelöscht bzw. an die richtige Stelle neu eingefügt. Es gibt bei der ganzen Sachen keine äußere Abgleichmöglichkeit, sondern das ganze kann sich nur aus der Reihenfolge der Einfügung und den vorhandenen Werten ergeben....

Ich hoffe jemand kann helfen!

Grüße
Paparatzi

  1. Hallo Paparatzi,

    Ich hoffe jemand kann helfen!

    vielleicht, wenn du verrätst, woran du gescheitert bist und was du bisher schon geschaft hast. Bisher hast du nur dein Problem beschrieben und das du es mit "splice" gelöst hast.

    Gruß, Jürgen

    1. Hallo Jürgen,

      mit splice entferne ich Werte bzw. füge ich in den Array einen neuen Datensatz ein.

      Für die neue Durchzählung würde ich wie folgt vorgehen:

      Den Array zu duplizieren, einen in einer Schleife durchlaufen und dabei die Differenz zum Bsp. der Tage beim Vorgängern und dem aktuellen Wert prüfen. Ist die Differenz größer als 0 wird der Tagwert um 1 hochgezählt (ist die Differenz 2 wurde ein Tag komplett gelöscht, der Tagwert wird trotzdem nur um 1 hochgezählt).  Der jeweilige Wert im originalen Array wird mit dem neuen Tagwert überschrieben....

      Das ganze wird nun jeweils für die Tage, für die Stationen und für die Substationen durchgeführt....

      Ziemlich umständlich...

      Hallo Paparatzi,

      Ich hoffe jemand kann helfen!

      vielleicht, wenn du verrätst, woran du gescheitert bist und was du bisher schon geschaft hast. Bisher hast du nur dein Problem beschrieben und das du es mit "splice" gelöst hast.

      Gruß, Jürgen

      1. Hallo Paparatzi,

        ... neue Durchzählung ...

        was verstehst du unter Durchzählung?

        Gruß, Jürgen

        1. Guten Abend!

          Es geht darum die Felder tag/station/substation neu durchzuzählen, wenn eine Array-Zeile neu eingefügt bzw. gelöscht wird. So dass die Reihe immer geschlossen erhalten bleibt....
          Der Index des Arrays bleibt immer erhalten bzw. updatet sich ja selbst.

          Der Bsp. Array im ersten Post gibt den Inhalt der Felder wieder und nicht die Keys... kommt evtl. missverständlich rüber...

  2. Grüße,
    ich würde mich an deiner stelle nicht auf meine meinung verlassen, aber ich glaube dass nichtassoziative arrays immer durchgehend nummeriert sind.
    MFG
    bleicher

    --
    __________________________-

    FirefoxMyth
  3. [latex]Mae  govannen![/latex]

    Der Array ist wie folgt aufgbaut:

    key/objekt/tag/station/substation

    werte[0][object][1][0][0]
    werte[1][object][1][1][0]

      
    Für was steht hier object (insbesondere Datentyp)? In Javascript-Arrays dürfen ausschließlich[1] numerische Keys verwendet werden.  
    Solltest du einen abweichenden Typ nutzen wollen, mußt du mit Objekten (bzw. mit einer Mischform aus Arrays und Objekten) arbeiten.  
      
    Stur lächeln und winken, Männer!  
    Kai  
      
    [1] es ist zwar möglich, auch nicht-numerische Keys wie z.B. Zeichenketten zu verwenden, allerdings wird length nicht angepasst und  
    die Array-Methoden wirken auf diese Eigenschaften nicht.  
    
    -- 
    Dank Hixies Idiotenbande geschieht grade eben wieder ein Umdenken  
    in Richtung "Mess up the Web".([suit](https://forum.selfhtml.org/?t=197497&m=1324775))  
    [SelfHTML-Forum-Stylesheet](http://selfhtml.knrs.de/#h_stylesheet)
    
  4. Wenn nun ein Tag gelöscht wird, sollen alle folgenden Tage neu durchnummeriert werden, also wird  zum Bsp. Tag 2 gelöscht müssen alle Stationen/Substationen von Tag 3 auf Tag 2 gelegt werden, und von Tag 4 auf Tag 3. Wenn eine Station innerhalb eines Tages gelöscht wird rutschen die Folgestationen jeweils einen Zähler vor, wobei dann der Tag gleich bleibt.
    Bei den Substationen ist es ähnlich. Hier beleiben dann Tag und Station gleich.
    Die einzelnen Werte werden mit "splice", gelöscht bzw. an die richtige Stelle neu eingefügt. Es gibt bei der ganzen Sachen keine äußere Abgleichmöglichkeit, sondern das ganze kann sich nur aus der Reihenfolge der Einfügung und den vorhandenen Werten ergeben....

    Das sollte so auch funktionieren, wahrscheinlich ein Fehler im Source. Arrays werden bei splice sozusagen automatisch reindiziert...