Sobes.tech
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 сортира елементите на масива на място. По подразбиране, той преобразува елементите в низове и ги сортира лексикографски. За правилно сортиране на числа, трябва да му подадете функция за сравнение.

Функцията за сравнение приема два аргумента, 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);