Re: Fwd: metoda sort()

From: Paco (paco@seznam.cz)
Date: 12. 07. 2002, 12:42 CEST


> Preposilam dotaz... KAB

> Vytvoril jsem si pole cisel a nyni pomoci metody sort() potrebuji
> tyto cisla seradit. To sice funguje, ale cisla jsou prevedena na retezec a
> razena lexikograficky. A to prave nechci. Vycetl jsem, ze se mam odkazat z
> metody sort() na porovnavaci funkci. Referencni prirucka pravi, ze ona fce
> 'musi byt odkazem na funkci o dvou parametrech, ktera musi vracet ciselnou
> hodnotu a pole je setrideno s ohledem na hodnotu vracenou funkci.'
> Takhle vypada cely kod (je obslehnuty z referencni prirucky DHTML)
> 
> function porovnavaci_funkce(x,y){
> return x-y;
> }
> a=new Array(54,132,11)
> b=a.sort(spravny zapis odkazu na porovnavaci funkci);
> document.write(b);
> 
> Neni mi ovsem zcela jasne, jak se spravne odvolat na tuto fci z
> metody sort(), aniz bych neobdrzel chybove hlaseni...  Terrior

Jak proste, mily Watsone... :)

   b=a.sort(porovnavaci_funkce);

Tot vse, proste pointer na tu komparacni fci. A neni nutne
vyrabet dalsi kopii pole zapisem

   b=a.sort(porovnavaci_funkce);

postaci to pole sesortovat 'samo v sobe', pokud ovsem to
puvodni poradi nepotrebujes zachovat:

   a.sort(porovnavaci_funkce);

Jeste pro uplnost dodam, ze ta komparacni fce musi vracet
hodnotu ktera je mensi/rovna/vetsi nule podle vyhodnoceni
vzajemneho vztahu parametru, cimz se da sorting vselijak
ruzne ovlivnovat. Ale ja osobne nejsem temto user-hookum
na externi fce pri sortingu prilis naklonen. Podle mych
zkusenosti to pri vetsich objemech tridenych dat vzdy vede
ke znatelnemu zpomaleni. Pro dany pripad bych si spise
napsal nejakou vlastni fci pro numericky sort.

pako Paco. 


______________________________________________________________________
Reklama:
Mapy Prahy, Brna a Cech najdete na http://www.mapy.cz



This archive was generated by hypermail 2.1.2 : 12. 07. 2002, 12:42 CEST