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 :)