tutorials.de Buch-Aktion 05/2012
Like Tree1Danke
  • 1 Beitrag von CPoly
ERLEDIGT
NEIN
ANTWORTEN
7
ZUGRIFFE
297
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Ozan Cörüt Ozan Cörüt ist offline Rookie
    Registriert seit
    Dec 2011
    Ort
    A, A
    Beiträge
    5
    Hi,

    habe ein JS Object mit z.B. der Form:

    Code :
    1
    2
    3
    4
    
    []
    HTML = 1
    SPAN = 204
    DIV = 132

    Wie kann ich das Object so nach dem Wert ordnen, das am Ende das Object folgendermaßen ausschaut

    Code :
    1
    2
    3
    4
    
    []
    HTML = 1
    DIV = 132
    SPAN = 204

    Habe schon 1000 Seite durchsucht dort sind sehen die Objekte aber immer etwas anders aus...
     

  2. #2
    CPoly CPoly ist offline Mitglied Weizenbier
    tutorials.de Premium-User
    Registriert seit
    Sep 2009
    Beiträge
    2.445
    Ich verstehe nicht, in welcher Form die Daten vorliegen. Was du dort als JS Object postest, lässt das leider nicht erkennen.

    Meinst du so was?

    Code :
    1
    2
    3
    4
    5
    
    {
        "HTML": 1,
        "SPAN": 204,
        "DIV": 132
    }
     

  3. #3
    Ozan Cörüt Ozan Cörüt ist offline Rookie
    Registriert seit
    Dec 2011
    Ort
    A, A
    Beiträge
    5
    JS Object nach value Sortieren-untitled-1.jpg

    Das zeigt mir Firebug an
     

  4. #4
    Ozan Cörüt Ozan Cörüt ist offline Rookie
    Registriert seit
    Dec 2011
    Ort
    A, A
    Beiträge
    5
    Also nochmal genauer:

    ich will den DOM einer Website auslesen. Daraus erstelle ich ein Array/Object das immer einen TagName = Anzahl der Tags

    mit dieser Funktion

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    
    var tagCount = new Array();
        
        var allTags = $( '*', contentDocument );    
        
        $.each( allTags, 
                function() {
                    if( typeof( tagCount[ this.tagName ] ) == 'undefined' )
                        tagCount[this.tagName] = 1;
                    else
                        tagCount[ this.tagName] = tagCount[ this.tagName] + 1;
                }           
        );


    z.B.:

    Code :
    1
    2
    3
    4
    
    HTML: 1
    SPAN: 5
    H1: 6
    DIV: 3

    dieses Objekt möchte ich ordnen, so dass es am Ende so ausschaut

    Code :
    1
    2
    3
    4
    
    HTML:  1
    DIV:    3
    SPAN:  5
    H1:     6

    das Ding dabei ist, dass ich die Werte sortieren kann, die TagNamen aber gleich bleiben, also kommt ein falsches Ergebnis raus z.B.:

    Code :
    1
    2
    3
    4
    
    HTML: 1
    SPAN: 3
    H1: 5
    DIV: 6
    Geändert von Ozan Cörüt (06.12.11 um 18:25 Uhr)
     

  5. #5
    CPoly CPoly ist offline Mitglied Weizenbier
    tutorials.de Premium-User
    Registriert seit
    Sep 2009
    Beiträge
    2.445
    Lass dir die Daten mal mittels JSON.stringify() in die Konsole ausgeben. Dass FireBug dir das anzeigt ist ja schön, aber wo kommen die Daten her? Ist das jetzt die Ansicht von einem Objekt aus deinem JavaScript Code?

    Falls es sich wirklich um eine Objekt handelt, dann kannst du da nichts sortieren. Ein Objekt ist im Prinzip eine Hashmap und hat keine Ordnung. Du kannst es nur bei der Ausgabe machen. Oder du steckst alles in ein Array.

    Edit: Jetzt bekommt das ganze Hand und Fuß. Ich gucke mir deinen Code erst mal an.
     

  6. #6
    Ozan Cörüt Ozan Cörüt ist offline Rookie
    Registriert seit
    Dec 2011
    Ort
    A, A
    Beiträge
    5
    Wenn ich JSON.stringify() benutze gibt er garnichts aus :>
     

  7. #7
    CPoly CPoly ist offline Mitglied Weizenbier
    tutorials.de Premium-User
    Registriert seit
    Sep 2009
    Beiträge
    2.445
    Zitat Zitat von Ozan Cörüt Beitrag anzeigen
    Wenn ich JSON.stringify() benutze gibt er garnichts aus :>
    Weil dein Code falsch ist. Du legst mit "new Array" ein Array an, benutzt es aber als Objekt.

    Code javascript:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    
    var
        tagObj = {},
        tagArr = [],
        allTags = document.getElementsByTagName('*');
     
    //Die Elemente und Ihre Häufigkeit als Schlüssel/Wert Paare ins Objekt
    /*
        {
            "HTML": 1,
            "DIV": 17,
            ...
        }
    */
    for(var i = 0; i < allTags.length; i++) {
        var name = allTags[i].tagName;
        tagObj[name] = (tagObj[name] || 0) + 1;
    }
     
    //Jetzt ein Array, dass an jeder Stelle ein Objekt hat, mit den Infos zu dem Elemente
    /*
        [
            {
                "tag": "HTML",
                "count": 1
            },
            {
                "tag": "DIV",
                "count": 17
            },
            ...
        ]
    */
    for(var k in tagObj) {
        tagArr.push({
            "tag": k,
            "count": tagObj[k]
        });
    }
     
    //Sortieren
    tagArr.sort(function(a, b) {
        return a["count"] - b["count"];
    });
     
    console.log(JSON.stringify(tagObj));
    console.log(JSON.stringify(tagArr));
    Ozan Cörüt bedankt sich. 

  8. #8
    Ozan Cörüt Ozan Cörüt ist offline Rookie
    Registriert seit
    Dec 2011
    Ort
    A, A
    Beiträge
    5
    Vielen Dank, habe es jetzt hinbekommen.
    Geändert von Ozan Cörüt (06.12.11 um 19:06 Uhr)
     

Ähnliche Themen

  1. MYSQL KAlender nach Datum gruppieren, nach Uhrzeit sortieren
    Von kamstarr im Forum Relationale Datenbanksysteme
    Antworten: 7
    Letzter Beitrag: 09.01.10, 01:12
  2. Sortieren nach Datum und nach jetztiger Zeit
    Von ciberjoerg im Forum PHP
    Antworten: 1
    Letzter Beitrag: 21.09.09, 08:23
  3. Antworten: 5
    Letzter Beitrag: 24.09.08, 00:10
  4. int nach Object casten?
    Von chickenwings im Forum Java
    Antworten: 6
    Letzter Beitrag: 28.05.06, 21:45
  5. nach jahren und nach monaten sortieren
    Von Torsoe im Forum Relationale Datenbanksysteme
    Antworten: 1
    Letzter Beitrag: 02.06.04, 19:09

Stichworte