Задачи по JavaScript
December 17, 2023
Задача с codewars: порядок по убыванию
Создайте функцию, которая принимает любое неотрицательное целое число и возвращает число, состоящее из цифр исходного числа в порядке убывания. Другими словами, переставьте цифры так, чтобы получить максимально возможное число.
Примеры
Решение
function descendingOrder(n) {
return Number(String(n).split('').sort((a, b) => b - a).join(''));
}Объяснение
Чтобы изменять порядок цифр, нам понадобится массив из этих цифр, дальше массив отсортируем как нам нужно и переведем обратно в число. Поехали:
- Сначала нужно преобразовать входное число
nв строку. Это можно сделать несколькими способами, здесь мы использовали явное приведение к строке через функциюString(). - Затем разбиваем строку на массив при помощи метода
split(''). Это превращает строку'42145'в массив строк:['4', '2', '1', '4', '5']. - Сортируем массив в порядке убывания при помощи метода
sort(), в который передаем функцию для сравнения(a, b) => b - a. Эта функция сравнивает два числаaиb. Еслиbбольшеa, то они меняются местами, получаем отсортированный массив['5', '4', '4', '2', '1']. - Объединяем элементы массива обратно в одну строку, для этого используем метод
join('')с пустой строкой в качестве атрибута, это склеивает без разделителей между элементами массива — получаем строку с цифрами в правильном порядке'54421'. - Преобразуем строку обратно в число при помощи функции
Number()и получаем54421🎉.
*Еще один способ отсортировать массив — это .sort().reverse().
** Привести значения к нужному типу можно и другими способами, например, получить массив из строки через spread-оператор или привести к числу, используя унарный плюс и т.д.
Telegram-канал: @amake_frontend