[JS] (json) objects, snel door heen loopen

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • semicon
  • Registratie: Augustus 2003
  • Laatst online: 20-08 14:04
Hoi,

Ik heb eigenlijk een vraag uit nieuwschierigheid, waar ik geen antwoord op kan vinden. Ben aan het stoeien met loops/objects/json-calls in een (js)applicatie en probeer overal te optimizen.

Nou heb ik zo'n soort "getCollection" ergens gemaakt in mijn applicatie die basically dit doet:

code:
1
2
3
4
5
6
7
            for (var i = 0; i < this.data.length; i++)
            {
                for (property in this.data[i])
                {
                    collection.push(this.data[i][property]);
                }
            }


Ik vroeg me af of dit beter/sneller kon, heb er niks over kunnen vinden, zie meerdere mensen het zo (ongeveer) doen.
:>

edit: O ja, de reden dat ik die tweede loop doe, is dat de collectie gevult moet worden met dezelfde "soort" data.

de inkomende data ziet er zo uit:
code:
1
2
3
4
5
6
7
8
"id": {
     name: "nvt",
     etc: 123,
     etc...
}

// wil de collectie alleen volgende geven
{ name: "nvt", etc: 123, etc...},{ name: "nvt", etc: 123, etc...},{ name: "nvt", etc: 123, etc...}, etc

[ Voor 24% gewijzigd door semicon op 16-06-2009 09:05 ]


Acties:
  • 0 Henk 'm!

  • Japius
  • Registratie: April 2003
  • Laatst online: 30-08 20:57
Volgens mij weet je meestal vantevoren wat er in je resultset staat en is daarmee de tweede loop niet nodig. Voor debuggen is dit natuurlijk wel lekker makkelijk.

Acties:
  • 0 Henk 'm!

  • crisp
  • Registratie: Februari 2000
  • Laatst online: 15:44

crisp

Devver

Pixelated

Kan je er niet voor zorgen dat het al een array is in je JSON data ipv een object?

Intentionally left blank


Acties:
  • 0 Henk 'm!

  • semicon
  • Registratie: Augustus 2003
  • Laatst online: 20-08 14:04
crisp schreef op dinsdag 16 juni 2009 @ 09:29:
Kan je er niet voor zorgen dat het al een array is in je JSON data ipv een object?
8)7 ofcourse!

Ik kan natuurlijk het resultaat zelf aanpassen :P Het werkt ook echt meteen stuk beter, nu heb ik de code zo:

code:
1
2
3
4
5
6
7
8
9
10
11
12
// KNIP
        find: function (pos_id) {
            return this.data[pos_id];
        },
        get_collection: function () {
            collection = [];
            for (key in this.data)
            {
                collection.push(this.data[key]);
            }
            return collection;
        }


(sorry moet echt nog wakker worden denk ik)

Acties:
  • 0 Henk 'm!

  • Michali
  • Registratie: Juli 2002
  • Laatst online: 29-05 22:54
Wat is data dan? Is dat werkelijke en associatieve array of dictionary, of zijn de keys gewoon oplopende nummers? In het 2de geval kun je natuurlijk ook gewoon een kopie van dat object terug geven. Bijvoorbeeld bij een array door this.data.slice() aan te roepen (zonder argument).

Noushka's Magnificent Dream | Unity