---
title: "Sortowanie"
description: "Funkcje sortowania w skryptach TapHome: ORDER, ORDERSTRICT, ORDERINDEX, ORDERINDEXSTRICT i warianty malejące (ORDERDESC, ORDERINDEXDESC itd.) z obsługą NaN/NULL."
url: "https://taphome.com/pl/docs/script/sorting/"
language: pl
lastmod: 2026-11-06
generator: hugo
ai:
  topics: ["sorting","collections","ordering","scripting-language"]
  questions: ["Jak posortować wartości rosnąco w skrypcie TapHome?","Jak posortować wartości malejąco w TapHome?","Czym różni się ORDER od ORDERINDEX?","Jak warianty sortowania STRICT obsługują wartości NaN i NULL?","Jak uzyskać indeksy wartości w kolejności posortowanej?","Jak TapHome obsługuje NaN i NULL przy sortowaniu?","Jak znaleźć najtańszą godzinę z listy cen?"]
---

# Sortowanie

Funkcje sortowania w skryptach TapHome — ORDER, ORDERINDEX oraz ich warianty STRICT i malejące do sortowania wartości albo zwracania indeksów kolejności sortowania.

Ostatnia aktualizacja: 2026-11-06

Funkcje `ORDER` sortują wartości i zwracają nową kolekcję — albo posortowane wartości, albo, w wariantach `ORDERINDEX`, pierwotne pozycje wartości liczone od zera w kolejności posortowanej.

| Funkcja | Kolejność | Zwraca | Wartości nieznane (`Null`, `NaN`) |
|---|---|---|---|
| `ORDER` | rosnąco | wartości | usuwane |
| `ORDERSTRICT` | rosnąco | wartości | zachowywane, na początku |
| `ORDERDESC` | malejąco | wartości | usuwane |
| `ORDERDESCSTRICT` | malejąco | wartości | zachowywane, na początku |
| `ORDERINDEX` | rosnąco | indeksy | usuwane |
| `ORDERINDEXSTRICT` | rosnąco | indeksy | zachowywane, na początku |
| `ORDERINDEXDESC` | malejąco | indeksy | usuwane |
| `ORDERINDEXDESCSTRICT` | malejąco | indeksy | zachowywane, na początku |

Zasady wspólne dla wszystkich ośmiu funkcji:

- Przyjmują od 1 do 100 wartości albo dokładnie jedną kolekcję. Kolekcja źródłowa nie jest zmieniana.
- Wartości muszą być porównywalne i jednego rodzaju — liczby, znaki, teksty, `datetime` lub `timespan`; mieszanie liczb i tekstów to błąd.
- Teksty i znaki są sortowane według kodu znaku, więc wielkie litery są przed małymi.
- Równe wartości zachowują pierwotną kolejność.
- Warianty `STRICT` umieszczają wartości nieznane na początku, także w wariantach malejących.
- Pusta kolekcja to błąd: *Collection is null or empty*.

**Przykład — najtańsza godzina z listy cen**

```taphome
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 = 1
```

## ORDER

`ORDER` zwraca wartości posortowane rosnąco, bez `Null` i `NaN`.

```text
ORDER(value1, value2, ...)
ORDER(collection)
```

```taphome
# liczby rosnąco
ORDER(3, 1, 2);
# Result: {1, 2, 3}
# wartości NaN są usuwane
ORDER(3, NaN, 2, NaN);
# Result: {2, 3}
# znaki według kodu znaku
ORDER('Z', 'a', 'X');
# Result: {'X', 'Z', 'a'}
# teksty według kodu znaków, NULL usunięty
ORDER("str1", NULL, "STR2", "stR1");
# Result: {"STR2", "stR1", "str1"}
# przedziały czasu, NULL usunięty
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` zwraca wartości posortowane rosnąco i zachowuje `Null` i `NaN` na początku.

```text
ORDERSTRICT(value1, value2, ...)
ORDERSTRICT(collection)
```

```taphome
# wartości NaN zostają na początku
ORDERSTRICT(3, NaN, 2, NaN);
# Result: {NaN, NaN, 2, 3}
# teksty według kodu znaków
ORDERSTRICT("str1", "STR2", "stR1");
# Result: {"STR2", "stR1", "str1"}
# NULL zostaje na początku
ORDERSTRICT(NULL, TIMESPAN(0, 0, 0, 0, 99));
# Result: {NULL, TIMESPAN(0, 0, 0, 0, 99)}
```

## ORDERDESC

`ORDERDESC` zwraca wartości posortowane malejąco, bez `Null` i `NaN`.

```text
ORDERDESC(value1, value2, ...)
ORDERDESC(collection)
```

```taphome
# liczby malejąco
ORDERDESC(3, 1, 2);
# Result: {3, 2, 1}
# wartości NaN są usuwane
ORDERDESC(3, NaN, 2, NaN);
# Result: {3, 2}
# znaki malejąco według kodu
ORDERDESC('Z', 'a', 'X');
# Result: {'a', 'Z', 'X'}
# teksty malejąco, NULL usunięty
ORDERDESC("str1", NULL, "STR2", "stR1");
# Result: {"str1", "stR1", "STR2"}
```

## ORDERDESCSTRICT

`ORDERDESCSTRICT` zwraca wartości posortowane malejąco i zachowuje `Null` i `NaN` na początku.

```text
ORDERDESCSTRICT(value1, value2, ...)
ORDERDESCSTRICT(collection)
```

```taphome
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` zwraca pozycje wartości w kolejności rosnącej wartości, bez pozycji `Null` i `NaN`.

```text
ORDERINDEX(value1, value2, ...)
ORDERINDEX(collection)
```

**Zwraca** — `collection<int>` pozycji w danych wejściowych liczonych od zera. Pierwszy element to pozycja najmniejszej wartości.

```taphome
# pozycje liczb rosnąco
ORDERINDEX(3, 1, 2);
# Result: {1, 2, 0}
# pozycje NaN są pomijane
ORDERINDEX(3, NaN, 2, NaN);
# Result: {2, 0}
# pozycje tekstów, NULL pominięty
ORDERINDEX("str1", NULL, "STR2", "stR1");
# Result: {2, 3, 0}
```

## ORDERINDEXSTRICT

`ORDERINDEXSTRICT` zwraca pozycje wartości w kolejności rosnącej wartości, z pozycjami `Null` i `NaN` na początku.

```text
ORDERINDEXSTRICT(value1, value2, ...)
ORDERINDEXSTRICT(collection)
```

```taphome
# pozycje liczb rosnąco
ORDERINDEXSTRICT(3, 1, 2);
# Result: {1, 2, 0}
# pozycje NaN są na początku
ORDERINDEXSTRICT(3, NaN, 2, NaN);
# Result: {1, 3, 2, 0}
# pozycja NULL jest na początku
ORDERINDEXSTRICT(NULL, TIMESPAN(0, 0, 0, 0, 99));
# Result: {0, 1}
```

## ORDERINDEXDESC

`ORDERINDEXDESC` zwraca pozycje wartości w kolejności malejącej wartości, bez pozycji `Null` i `NaN`.

```text
ORDERINDEXDESC(value1, value2, ...)
ORDERINDEXDESC(collection)
```

```taphome
# pozycje liczb malejąco
ORDERINDEXDESC(3, 1, 2);
# Result: {0, 2, 1}
# pozycje NaN są pomijane
ORDERINDEXDESC(3, NaN, 2);
# Result: {0, 2}
# pozycje tekstów, NULL pominięty
ORDERINDEXDESC("str1", NULL, "STR2", "stR1");
# Result: {0, 3, 2}
```

## ORDERINDEXDESCSTRICT

`ORDERINDEXDESCSTRICT` zwraca pozycje wartości w kolejności malejącej wartości, z pozycjami `Null` i `NaN` na początku.

```text
ORDERINDEXDESCSTRICT(value1, value2, ...)
ORDERINDEXDESCSTRICT(collection)
```

```taphome
# pozycje liczb malejąco
ORDERINDEXDESCSTRICT(3, 1, 2);
# Result: {0, 2, 1}
# pozycje NaN są na początku
ORDERINDEXDESCSTRICT(3, NaN, 2, NaN);
# Result: {1, 3, 0, 2}
# pozycja NULL jest na początku
ORDERINDEXDESCSTRICT(NULL, TIMESPAN(0, 0, 0, 0, 99));
# Result: {0, 1}
```

**Zobacz też** — [Tekst i kolekcje](https://taphome.com/pl/docs/script/text-string-and-byte-array/), [Funkcje matematyczne](https://taphome.com/pl/docs/script/mathematical-functions/).
