Autor Zpráva
peta
Profil
Mam pole, do ktereho jsem vytahl z tabulky sloupce: program, obor, typ, ...
Chtel bych ted udelat funkci, ktera mi to textove seradi podle toho, jake jsou tam sloupce a nejlepe jeste 3 sloupce najednou.
Jakym zpusobem se to dela?

Zkusil jsem toto:
function sort3(arr) //program - obor - typ
{arr.sort( function(a,b){return (a[1]<b[1]);} );}
sort3(arr);
ale neni to uplne ono.

ciselne serazeni, to vim, to je:
function arr_numsort(arr,i)
{ arr.sort(function(a,b){return (a[i].substring(1)-b[i].substring(1));}); }
klasicke serazeni je
arr.sort()
a ja mam prave pole v poli a chtel bych serazovat podle sloupcu, textove.
var arr = [
[1,"a","d"],
[2,"b","e"],
[1,"c","f"]
];
ah01
Profil
Najdi si někde co má vracet compare funkce metody sort. Třeba na dev-mozilla-org. Pak zjistíš proč to sort3 není ono.
peta
Profil
ah01
to celkem vim.
z visibone, ma oblibena literartura.
- mensi
+ vetsi
0 rovno
ja pres < vracim
- neplati
+ 0 plati
Jsem si rikal, jestli to treba az tak rozepisovat pro kazde znamenko nebo je na to jina finta?
Kazdopadne se podivam, Mozilla by to mohla mit rozepsana.

function compare(a, b)
{
if (a is less than b by some ordering criterion)
return -1;
if (a is greater than b by the ordering criterion)
return 1;
// a must be equal to b
return 0;
}

tak jo, zkusim to nejak zplacat, pak poslu vysledek :)
peta
Profil
http://developer.mozilla.org/en/docs/Core_JavaScript_1.5_Reference:Glo bal_Objects:Array:sort
peta
Profil
je to lepsi, ale oddeluje mi programy/obory:
http://peter-mlich.wz.cz/x/sort/studium_programy3.htm

je to to
nazev - obor - typ
a puvodni
Pokud zmacknes neco jineho, tak to cele sprehaze. To jeste nemam poresene

Jde o to, ze treba Filologie je Bc/ Mgr a pod, ale mohlo by to byt jako pod sebou. Ale to si poresim, to je prave ten treti sloupec.
Tu funkci jsem nechtel psat tak drasticky pres 3 ify, ale zrejme jina cesta neni. Proto jsem se zeptal.
peta
Profil
uz by to melo byt OK, serazovani sloupcu tabulky

http://peter-mlich.wz.cz/x/sort/studium_programy3.htm

function sort1(arr) //kod - typ - program - obor
{
arr.sort(function(a,b){return (
c_id(a[0],b[0])!=0 ? c_id(a[0],b[0]) : c_str(a[3],b[3])!=0 ? c_str(a[3],b[3]) : c_str(a[1],b[1])!=0 ? c_str(a[1],b[1]) : c_str(a[2],b[2])
);});
}

function sort2(arr) //program - obor - typ
{
arr.sort(function(a,b){return (
c_str(a[3],b[3])!=0 ? c_str(a[3],b[3]) : c_str(a[1],b[1])!=0 ? c_str(a[1],b[1]) : c_str(a[2],b[2])
);});
}

function sort3(arr) //program - typ - obor
{
arr.sort(function(a,b){return (
c_str(a[1],b[1])!=0 ? c_str(a[1],b[1]) : c_str(a[3],b[3])!=0 ? c_str(a[3],b[3]) : c_str(a[2],b[2])
);});
}

function sort_table(n)
{
var a,b,arr; a=1; b=0;
switch (n*1)
{
case 1: arr=tab_data; sort1(arr); gen_table(arr); break;
case 2: arr=tab_data; sort2(arr); gen_table(arr); break;
case 3: arr=tab_data; sort3(arr); gen_table(arr); break;
default: a=0; b=1; break;
}
Toto téma je uzamčeno. Odpověď nelze zaslat.

0