Kaip surūšiuotumėte skaičių masyvą?
sobes.tech AI
Atsakymas iš AI
// Naudojame `sort()` metodą su palyginimo funkcija
const numbers = [4, 2, 5, 1, 3];
numbers.sort((a, b) => a - b); // Rūšiavimas didėjimo tvarka
// Rūšiavimui mažėjimo tvarka:
// numbers.sort((a, b) => b - a);
sort() metodas JavaScript'e rūšiuoja masyvo elementus vietoje. Pagal numatytuosius nustatymus jis paverčia elementus į eilutės ir rūšiuoja juos leksikografiškai. Norint teisingai rūšiuoti skaičius, reikia perduoti sort() funkciją palyginti.
Palyginimo funkcija priima du argumentus, a ir b.
- Jei funkcija grąžina neigiamą skaičių,
abus priešb. - Jei funkcija grąžina teigiamą skaičių,
bbus prieša. - Jei funkcija grąžina 0, elementų tvarka nesikeičia.
Skaičių rūšiavimui didėjimo tvarka naudojama (a, b) => a - b. Jei a yra mažesnis už b, rezultatas bus neigiamas, ir a eis prieš b.
Skaičių rūšiavimui mažėjimo tvarka naudojama (a, b) => b - a. Jei b yra mažesnis už a, rezultatas bus teigiamas, ir b eis prieš a.
Kiti metodai (mažiau dažnai naudojami paprastiems skaičių masyvams, bet naudingi):
-
localeCompare()metodas su skaičiais kaip eilutėmis:// Neskirtas naudoti tikriems skaičiams, bet gali būti naudojamas // jei skaičiai pateikti kaip eilutės ir reikia atsižvelgti į lokalę. const stringNumbers = ["10", "2", "1"]; stringNumbers.sort((a, b) => a.localeCompare(b, undefined, { numeric: true })); // Rūšiuos kaip [ "1", "2", "10" ] -
Masyvo kopijos sukūrimas prieš rūšiavimą:
// Jei norite išsaugoti pradinį masyvą const originalNumbers = [4, 2, 5, 1, 3]; const sortedNumbers = [...originalNumbers].sort((a, b) => a - b); // arba // const sortedNumbers = originalNumbers.slice().sort((a, b) => a - b);