Sobes.tech
Junior
110
questionbank

Как бы вы отсортировали массив чисел?

AI答案

sobes.tech 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 идет перед b. Для сортировки по убыванию используется (a, b) => b - a. Если b меньше a, результат положительный, и b идет перед a.

Другие методы (менее частые для простых числовых массивов, но полезные):

  • Метод 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);