@vtaeke

Как реализовать функцию, которая принимает любое неотрицательное целое число и возвращает его цифрами в порядке убывания?

Реализуйте функцию, которая принимает любое неотрицательное целое число в качестве аргумента и возвращает число с его цифрами в порядке убывания. По сути, переставьте цифры так, чтобы получилось максимально возможное число.

Начнем по порядку, нам нужно сортировать элементы от большего к меньшему, а вернуть массив?

function maxTransform(arr) {
  arr.sort((a, b) => b.length - a.length);
  return arr;
}


42145 ----> 54421
  • Вопрос задан
  • 1151 просмотр
Решения вопроса 1
0xD34F
@0xD34F Куратор тега JavaScript
const sortDigits = num => +[...`${num}`].sort((a, b) => b - a).join('');

или

const sortDigits = num => ''.concat.apply('', num.toString().split('').sort().reverse()) - 0;

или

const sortDigits = num => Number(Array
  .from('' + num)
  .reduce((acc, n) => (acc[n]++, acc), Array(10).fill(0))
  .reduceRight((acc, n, i) => acc + String(i).repeat(n), '')
);

или

const sortDigits = num => Array
  .prototype
  .reduce
  .call(String(num), (acc, n) => ((acc[9 - n] ??= []).push(n | 0), acc), [])
  .flat()
  .reduce((acc, n) => acc * 10 + n, 0);
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы