Junior
Как бихте сортирали масив от числа?
sobes.tech AI
Отговор от AI
// Използваме метода sort() с функция за сравнение
const numbers = [4, 2, 5, 1, 3];
numbers.sort((a, b) => a - b); // Възходящ ред
// За низходящ ред:
// numbers.sort((a, b) => b - a);
Методът sort() в JavaScript сортира елементите на масива на място. По подразбиране преобразува елементите в низове и ги сортира лексикографски. За правилно сортиране на числа е необходимо да се подаде функция за сравнение към sort().
Функцията за сравнение приема два аргумента, a и b.
- Ако функцията връща отрицателно число,
aще бъде предиb. - Ако връща положително число,
bще бъде предиa. - Ако връща 0, редът на елементите не се променя.
За сортиране на числа във възходящ ред се използва (a, b) => a - b. Ако a е по-малко от b, резултатът е отрицателен и a идва преди.
За низходящ ред се използва (a, b) => b - a. Ако b е по-малко от a, резултатът е положителен и b идва преди.
Други методи (по-редки за прости числови масиви, но полезни):
-
Метод
localeCompare()за низове с числа:// Не се препоръчва за чисти числа, но може да се използва // ако числата са представени като низове и трябва да се вземе предвид локалът. const stringNumbers = ["10", "2", "1"]; stringNumbers.sort((a, b) => a.localeCompare(b, undefined, { numeric: true })); // Ще сортира като [ "1", "2", "10" ] -
Създаване на копие на масива преди сортиране:
// Ако искате да запазите оригиналния масив const originalNumbers = [4, 2, 5, 1, 3]; const sortedNumbers = [...originalNumbers].sort((a, b) => a - b); // или // const sortedNumbers = originalNumbers.slice().sort((a, b) => a - b);