JavaScript: Jak posortować tablicę nie zmieniając oryginału?
Opublikowano: 01.05.2021 - tagi: JavaScript Tablica Sortowanie
Ostatnio, w pracy stanąłem przed takim problemem: musiałem na podstawie pewnego zbioru danych(zwykła tablica stringów) posortować ten zbiór i wykorzystać go do wyświetlenia danych.
W JavaScript to nic trudnego wystarczy wywołać metodę: sort... No, ale z tą metodą jest pewien problem. Przykład:
const data = ['option 5', 'option 2', 'option 4', 'option 3', 'option 1'];
data.sort();
console.log(data);
Wyświetli:
Array(5) [ "option 1", "option 2", "option 3", "option 4", "option 5" ]
Jak widać metoda sort posortowała elementy tablicy na której została funkcja wywołana.
A co w przypadku, gdy nie chcemy zmieniać oryginalnej tablicy, a po prostu dostać nową posortowaną?
Rozwiązanie:
const data = ['option 5', 'option 2', 'option 4', 'option 3', 'option 1'];
const sortedData = [...data].sort();
console.log('data: ', data);
console.log('sortedData: ', sortedData);
Wyświetli:
data: Array(5) [ "option 5", "option 2", "option 4", "option 3", "option 1" ]
sortedData: Array(5) [ "option 1", "option 2", "option 3", "option 4", "option 5" ]
Skorzystaliśmy tutaj z operatora spread ...data. Zapis:
[...data]
Tworzy po prostu kopię z oryginalnej tablicy. Następnie sortujemy kopię i uzyskujemy to czego potrzebowaliśmy :)