Задачи по 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