Sortiranje
Funkcije skripte TapHome za sortiranje — ORDER, ORDERINDEX i njihove varijante STRICT i silazne varijante za sortiranje vrijednosti ili vraćanje indeksa redoslijeda.
Funkcije ORDER sortiraju vrijednosti i vraćaju novu zbirku — sortirane vrijednosti ili, u varijantama ORDERINDEX, izvorne položaje vrijednosti (od nule) u sortiranom redoslijedu.
| Funkcija | Redoslijed | Vraća | Nepoznate vrijednosti (Null, NaN) |
|---|---|---|---|
ORDER | uzlazno | vrijednosti | uklonjene |
ORDERSTRICT | uzlazno | vrijednosti | zadržane, na početku |
ORDERDESC | silazno | vrijednosti | uklonjene |
ORDERDESCSTRICT | silazno | vrijednosti | zadržane, na početku |
ORDERINDEX | uzlazno | indekse | uklonjene |
ORDERINDEXSTRICT | uzlazno | indekse | zadržane, na početku |
ORDERINDEXDESC | silazno | indekse | uklonjene |
ORDERINDEXDESCSTRICT | silazno | indekse | zadržane, na početku |
Pravila zajednička svim osam funkcija:
- Primaju 1 do 100 vrijednosti ili točno jednu zbirku. Izvorna zbirka se ne mijenja.
- Vrijednosti moraju biti usporedive i iste vrste — brojevi, znakovi, nizovi znakova,
datetimeilitimespan; miješanje brojeva i nizova znakova je pogreška. - Nizovi znakova i znakovi sortiraju se prema kodu znaka, pa velika slova dolaze prije malih.
- Jednake vrijednosti zadržavaju izvorni redoslijed.
- Varijante
STRICTstavljaju nepoznate vrijednosti na početak, i u silaznim varijantama. - Prazna zbirka je pogreška: Collection is null or empty.
Primjer — najjeftiniji sat iz popisa cijena
VAR prices := {12.5, 8.1, 20.0, 9.9};
VAR cheapest := GETAT(ORDER(prices), 0);
# cheapest = 8.1
VAR cheapestHour := GETAT(ORDERINDEX(prices), 0);
# cheapestHour = 1ORDER
ORDER vraća vrijednosti sortirane uzlaznim redoslijedom, bez Null i NaN.
| |
ORDER(3, 1, 2);
# Result: {1, 2, 3}
ORDER(3, NaN, 2, NaN);
# Result: {2, 3}
ORDER('Z', 'a', 'X');
# Result: {'X', 'Z', 'a'}
ORDER("str1", NULL, "STR2", "stR1");
# Result: {"STR2", "stR1", "str1"}
ORDER(NULL, TIMESPAN(0, 0, 0, 0, 100), TIMESPAN(0, 0, 0, 0, 99));
# Result: {TIMESPAN(0, 0, 0, 0, 99), TIMESPAN(0, 0, 0, 0, 100)}ORDERSTRICT
ORDERSTRICT vraća vrijednosti sortirane uzlaznim redoslijedom i zadržava Null i NaN na početku.
| |
ORDERSTRICT(3, NaN, 2, NaN);
# Result: {NaN, NaN, 2, 3}
ORDERSTRICT("str1", "STR2", "stR1");
# Result: {"STR2", "stR1", "str1"}
ORDERSTRICT(NULL, TIMESPAN(0, 0, 0, 0, 99));
# Result: {NULL, TIMESPAN(0, 0, 0, 0, 99)}ORDERDESC
ORDERDESC vraća vrijednosti sortirane silaznim redoslijedom, bez Null i NaN.
| |
ORDERDESC(3, 1, 2);
# Result: {3, 2, 1}
ORDERDESC(3, NaN, 2, NaN);
# Result: {3, 2}
ORDERDESC('Z', 'a', 'X');
# Result: {'a', 'Z', 'X'}
ORDERDESC("str1", NULL, "STR2", "stR1");
# Result: {"str1", "stR1", "STR2"}ORDERDESCSTRICT
ORDERDESCSTRICT vraća vrijednosti sortirane silaznim redoslijedom i zadržava Null i NaN na početku.
| |
ORDERDESCSTRICT(3, NaN, 2, NaN);
# Result: {NaN, NaN, 3, 2}
ORDERDESCSTRICT(NULL, TIMESPAN(0, 0, 0, 0, 99), TIMESPAN(0, 0, 0, 0, 100));
# Result: {NULL, TIMESPAN(0, 0, 0, 0, 100), TIMESPAN(0, 0, 0, 0, 99)}ORDERINDEX
ORDERINDEX vraća položaje vrijednosti uzlaznim redoslijedom vrijednosti, bez položaja vrijednosti Null i NaN.
| |
Vraća — collection<int> položaja u ulazu, od nule. Prvi element je položaj najmanje vrijednosti.
ORDERINDEX(3, 1, 2);
# Result: {1, 2, 0}
ORDERINDEX(3, NaN, 2, NaN);
# Result: {2, 0}
ORDERINDEX("str1", NULL, "STR2", "stR1");
# Result: {2, 3, 0}ORDERINDEXSTRICT
ORDERINDEXSTRICT vraća položaje vrijednosti uzlaznim redoslijedom vrijednosti, s položajima vrijednosti Null i NaN na početku.
| |
ORDERINDEXSTRICT(3, 1, 2);
# Result: {1, 2, 0}
ORDERINDEXSTRICT(3, NaN, 2, NaN);
# Result: {1, 3, 2, 0}
ORDERINDEXSTRICT(NULL, TIMESPAN(0, 0, 0, 0, 99));
# Result: {0, 1}ORDERINDEXDESC
ORDERINDEXDESC vraća položaje vrijednosti silaznim redoslijedom vrijednosti, bez položaja vrijednosti Null i NaN.
| |
ORDERINDEXDESC(3, 1, 2);
# Result: {0, 2, 1}
ORDERINDEXDESC(3, NaN, 2);
# Result: {0, 2}
ORDERINDEXDESC("str1", NULL, "STR2", "stR1");
# Result: {0, 3, 2}ORDERINDEXDESCSTRICT
ORDERINDEXDESCSTRICT vraća položaje vrijednosti silaznim redoslijedom vrijednosti, s položajima vrijednosti Null i NaN na početku.
| |
ORDERINDEXDESCSTRICT(3, 1, 2);
# Result: {0, 2, 1}
ORDERINDEXDESCSTRICT(3, NaN, 2, NaN);
# Result: {1, 3, 0, 2}
ORDERINDEXDESCSTRICT(NULL, TIMESPAN(0, 0, 0, 0, 99));
# Result: {0, 1}