[Javascript] Array alphabetisch sorteren

Pagina: 1
Acties:
  • 113 views sinds 30-01-2008
  • Reageer

Acties:
  • 0 Henk 'm!

Anoniem: 107960

Topicstarter
Ik heb voor het structuren van informatie binnen een website een array met een lijst van voorwerpen, gesorteerd op de naam van een artiest --> voorwerpen[artist] = voorwerplijstartiest

De voorwerplijstartiest bevat dus weer een array met voorwerpen die bij die artiest horen, elk voorwerp is weer een array met hun eigenschappen, zoals naam en prijs. Nu wil ik 'voorwerplijstartiest' graag alphabetisch sorteren op voorwerp naam (dus voorwerp['naam'] of voorwerp.naam). Hoe doe ik dit?

Ik kon met google slechts op array.sort() komen, maar kon dit echter niet zo toepassen omdat dit direct in de array gaat sorteren, terwijl hij een niveau 'lager' moet.

Acties:
  • 0 Henk 'm!

  • BHR
  • Registratie: Februari 2002
  • Laatst online: 14-06 10:21

BHR

Je kunt aan array.sort() je eigen functie meegeven.

JavaScript:
1
2
3
4
5
6
function fn(a,b)
{
  return a.artiest - b.artiest;
}

array.sort(fn);


Waarbij a en b twee elementen uit je array zijn. Door een returnwaarde van <0, 0 of >0 wordt dan de sortering toegepast

[ Voor 29% gewijzigd door BHR op 28-07-2006 10:22 ]

No amount of key presses will shut off the Random Bug Generator


Acties:
  • 0 Henk 'm!

Anoniem: 107960

Topicstarter
BHR schreef op vrijdag 28 juli 2006 @ 10:21:
Je kunt aan array.sort() je eigen functie meegeven.

JavaScript:
1
2
3
4
5
6
function fn(a,b)
{
  return a.artiest - b.artiest;
}

array.sort(fn);


Waarbij a en b twee elementen uit je array zijn. Door een returnwaarde van <0, 0 of >0 wordt dan de sortering toegepast
Ik heb je oplossing geprobeerd maar a.artiest - b.artiest geeft alleen maar NaN terug, geen getal. Doe ik dan soms iets verkeerd? :?

Edit:
Ik heb het al opgelost aan de hand van BHR's voorbeeld. Voor de geintresseerden, dit was mijn oplossing:
JavaScript:
1
2
3
4
5
function sortItemLst(a,b){
    return (b.title < a.title) - (a.title < b.title);
}

array.sort(sortItemLst);


Dit zorgt voor een gesorteerde array :)

[ Voor 28% gewijzigd door Anoniem: 107960 op 28-07-2006 10:43 ]


Acties:
  • 0 Henk 'm!

  • BHR
  • Registratie: Februari 2002
  • Laatst online: 14-06 10:21

BHR

Copy&paste van nummer vergelijking :X

JavaScript:
1
2
3
4
5
6
function fn(a,b)
{
  if(a.artiest < b.artiest) return -1;
  if(a.artiest > b.artiest) return 1;
  return 0;
}


Dit is trouwens hoofdlettergevoelig. 'A' komt voor 'a'. Je zou misschien nog met toLowerCase() willen werken om hoofdletterongevoelige vergelijkingen.

[ Voor 8% gewijzigd door BHR op 28-07-2006 10:43 ]

No amount of key presses will shut off the Random Bug Generator


Acties:
  • 0 Henk 'm!

Anoniem: 107960

Topicstarter
BHR schreef op vrijdag 28 juli 2006 @ 10:42:
Copy&paste van nummer vergelijking :X

JavaScript:
1
2
3
4
5
6
function fn(a,b)
{
  if(a.artiest < b.artiest) return -1;
  if(a.artiest > b.artiest) return 1;
  return 0;
}


Dit is trouwens hoofdlettergevoelig. 'A' komt voor 'a'. Je zou misschien nog met toLowerCase() willen werken om hoofdletterongevoelige vergelijkingen.
Bedankt ;) Zoiets had ik al :) Zie post boven je!

[ Voor 7% gewijzigd door Anoniem: 107960 op 28-07-2006 10:45 ]