Promotic

Sort - metoda objektu PmArray

Popis:
Umožňuje třídit 1-rozměrné pole nebo 2-rozměrné pole.
U dvojrozměrných polí lze určit pořadí sloupců pro třídění.
Syntaxe:
Empty Sort(String sType, [Function onSort])
Parametry:
sType(String) Typ třídění.
Pokud je třídění prováděno funkcí zadanou v parametru onSort, pak zde musí být prázdný řetězec "".
Jinak se zde zadává řetězec podle typu pole:
- 1-rozměrné pole:
"tn" - numericky (=n), vzestupně
"tn+r" - numericky (=n), sestupně (=r)
"ts" - abecedně, vzestupně, systémově bez ohledu na aktivní jazyk (=s), rozlišuje velká/malá písmena
"ts+r" - abecedně, sestupně (=r), systémově bez ohledu na aktivní jazyk (=s), rozlišuje velká/malá písmena
"tsi" - abecedně, vzestupně, systémově bez ohledu na aktivní jazyk (=s), nerozlišuje velká/malá písmena (=i)
"tsi+r" - abecedně, sestupně (=r), systémově bez ohledu na aktivní jazyk (=s), nerozlišuje velká/malá písmena (=i)
"tl" - abecedně, vzestupně, lokalizovaně s ohledem na aktivní jazyk (=l), rozlišuje velká/malá písmena
"tl+r" - abecedně, sestupně (=r), lokalizovaně s ohledem na aktivní jazyk (=l), rozlišuje velká/malá písmena
"tli" - abecedně, vzestupně, lokalizovaně s ohledem na aktivní jazyk (=l), nerozlišuje velká/malá písmena (=i)
"tli+r" - abecedně, sestupně (=r), lokalizovaně s ohledem na aktivní jazyk (=l), nerozlišuje velká/malá písmena (=i)
- 2-rozměrné pole:
Při třídění podle jednoho sloupce se nejprve uvede index sloupce (c0+, c1+, ...), pak následuje způsob třídění (stejný jako u 1-rozměrného pole). Takže třídění podle určitého sloupce může vypadat např. takto: c0+ts.
 
Při třídění podle více sloupců současně se třídící pravidla pro jednotlivé sloupce uvedou podle důležitosti za sebou, oddělené znakem čárka (,). Například takto: "c1+ts,c0+tn+r". Výsledné pole pak bude setříděno ve druhém sloupci abecedně vzestupně a shodné položky tohoto třídění budou dále tříděny podle numerických hodnot prvního sloupce sestupně.
onSort[nepovinné] (Function) Parametr onSort obsahuje funkci, která umožňuje vlastní třídění 1-rozměrného pole tam, kde přednastavené způsoby třídění nestačí.
Funkce onSort uživatelsky porovnává navzájem dvě položky pole.
Tato funkce je během třídění opakovaně volána a musí být ve tvaru:
function onSort(v1, v2) { return v1 < v2 ? -1 : v1 > v2 ? 1 : 0; }
kde parametr v1 a parametr v2 obsahují dvě hodnoty pole, které se musí navzájem porovnat.
Funkce vrací:
-1 - pokud v1 < v2
1 - pokud v1 > v2
0 - pokud v1 = v2.
Poznámka! Pokud se použije parametr onSort, pak parametr sType musí být prázdný řetězec "".
Poznámka:
Tato metoda je funkční i ve Web obrazech.

V případě hodnotové shody tříděných položek není v poli zaručeno jejich vzájemné pořadí.
Příklad1:
Třídění 1-rozměrného pole numericky vzestupně:
JavaScriptVyber a zkopíruj do schránky

var arr = Pm.CreatePmArray().Array1(0.5, 0.1, 123, -3, -1, 0, 0.8, 0.2);
arr.Sort("tn");
// pole bude setříděné takto: -3, -1, 0, 0.1, 0.2, 0.5, 0.8, 123
Příklad2:
Třídění 1-rozměrného pole abecedně vzestupně:
JavaScriptVyber a zkopíruj do schránky

var arr = Pm.CreatePmArray().Array1("Madrid", "Berlin", "Atheny", "Praha", "Warszava", "Paris", "Vien", "Roma");
arr.Sort("ts");
// pole bude setříděné takto: "Atheny, Berlin, Madrid, Paris, Praha, Roma, Vien, Warszava"
Příklad3:
sestupně (=r), lokalizovaně s ohledem na aktivní jazyk (=l), nerozlišuje velká/malá písmena (=i)
JavaScriptVyber a zkopíruj do schránky

var arr = Pm.CreatePmArray().Array1("acg1", "ach1", "ACJ1");
arr.Sort("tli+r");
Příklad4:
Vlastní třídění 1-rozměrného pole:
JavaScriptVyber a zkopíruj do schránky

function onSort(v1, v2)
{
return v1 < v2 ? -1 : v1 > v2 ? 1 : 0;
}

var arr = Pm.CreatePmArray().Array1(0.5, 0.1, 123, -3, -1, 0, 0.8, 0.2);
arr.Sort("", onSort);
// pole bude setříděné takto: -3, -1, 0, 0.1, 0.2, 0.5, 0.8, 123

Historie:
Pm9.00.18: Nové druhy lokalizovaného třídění podle aktivního jazyka aplikace (tl, tli, tl+r a tli+r) v parametru sType.
Pm9.00.17: Nový parametr onSort pro třídění 1-rozměrného pole pomocí funkce.
Pm9.00.09: Vytvořeno
© MICROSYS, spol. s r. o.