JSon Array unsortiert ausgeben

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • JSon Array unsortiert ausgeben

    Guten Morgen

    Ich habe ein Problem bei dem ich irgendwie hänge.

    In PHP Habe ich einen Mehrdimensionales Array erstellt.

    Mithilfe von json_encode habe ich es umgewandelt und habe diese Reihenfolge von den ArrayIndex:
    6, 8, 7 (So soll es auch sein)
    Anschliessend verwende ich das so:
    var listJS = $listJS;
    Dies klappt auch. Wenn ich den quelltext im Browser ansehe habe ich auch diese Reihenfolge.

    Wenn ich nun aber dies so ausgebe mit jquery:
    Code:
    $.each( listJS, function(k, v){
      combi = combi + v['arrayID'] + "_";
    });
    erhalte ich die reihenfolge so:
    6_7_8_

    Wie bekomme ich es hin das ich die "original" reihenfolge erhalte?

    Gruss und Danke

    Koda

  • #2
    Die Reihenfolge in einem Array ist in JavaScript nicht festgelegt. Das heißt das Verhalten kann sich von Browser zu Browser unterscheiden.

    Comment


    • #3
      Hi

      Danke für deine Antwort. Kann ich die original Reihenfolge irgendwie erzwingen?

      Gruss

      Koda

      Comment


      • #4
        Du kannst ein zweites Array erstellen, das die Reihenfolge vorgibt: [6, 8, 7]

        Comment


        • #5
          Hi

          Ok. danke. Aber wie kann ich dann mit each die reihenfolge aus dem zweiten Array wählen? Hast du ggf ein codeschnippsel?

          JS ist leider nicht so meine stärke und jquery auch nicht. Bin schon froh das ich bis hier hin gekommen bin

          Ich habe nun mit PHP diesen Array für die Reihenfolge erstellt welchen in wieder mit json_encode übergebe.
          Array ( [0] => 6 [1] => 8 [2] => 7 )

          Gruss

          Koda
          Last edited by Koda; 30-06-2013, 08:50.

          Comment


          • #6
            Code:
            var order = [ 6, 8, 7 ];
            var values = { "6": "foo", "8": "bar", "7": "baz" };
            
            $.each(order, function () {
                console.log(values[this]);
            });
            oder
            Code:
            var values = [
                { key: 6, value: "foo" },
                { key: 8, value: "bar" },
                { key: 7, value: "baz" }
            ];
            
            $.each(values, function () {
                console.log(this.value);
            });

            Comment


            • #7
              Hi

              Vielen Dank. Das hat mich schon weitergebracht. Nun habe ich dies so.
              Die Variable order habe ich als array erstellt wie du oben geschrieben hast:
              var order = new Array(6,8,7);
              var values = { "6": "foo", "8": "bar", "7": "baz" };

              $.each(order, function () {
              $("#test").text(values[this]);
              });
              Er sagt mir nun jedoch das values[this] nicht definiert ist.

              Hab ich da ein überlegungsfehler?

              Edit: Habs Abgeändert in function (i, val) und schon gehts

              Gruss

              Koda
              Last edited by Koda; 30-06-2013, 09:17.

              Comment


              • #8
                Ich habe [ 6, 8, 7 ] geschrieben und nicht new Array(6, 8, 7).

                Comment

                Working...
                X