2016-08-15 5 views
1

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

Например, 234892 приведет к 984322.

Это то, что я придумал.

function descendingOrder(n){ 
var num = ''; 
for(var i = 0; i <= n.length + 1; i++){ // iterates through the number 
    for(var j = 9; j >= 0; j--){ // starts at 9 and checks numbers descending 
    if (j == n[i]){ 
     num.push(n[i]); // checks if j == n[i] and if so, pushes to num 
     } 
     i = 0; // sets i back to 0 to rescan the number again 
    } 
    } 
return num; 
} 
+0

S o что делает фактически выполненная функция? – j08691

+0

В чем вопрос? Есть ли проблема с вашим кодом? –

+0

Довольно неэффективно, но весело: '+ (234892 + '') .split (''). Reduce ((p, c, i) => (p [144 - c * 16 + i] = c, p), [ ]). присоединиться ('') '. Я не думаю, что он заслуживает ответа, верно? ;-) – Arnauld

ответ

5

Вы можете преобразовать число в строку, разделить каждый символ, сортировать его и присоединиться к ней снова:

+(234892 + '').split('').sort((a, b) => a < b).join('');  

var ordered = +(234892 + '').split('').sort((a, b) => a < b).join(''); 
 

 
document.getElementById('output').appendChild(document.createTextNode(ordered));
234892 → <span id="output"></span>

Подробное описание:

var str = 234892 + ''; // convert to string 
var parts = str.split(''); // convert to array of characters 
// sort 
parts.sort(function(a, b) { 
    return a < b; 
}); 
var finalStr = parts.join(''); // join characters to string 
var finalNumber = +finalStr; // convert back to number 
console.log(finalNumber); // 984322 
+1

приятно, и с одной строкой! – Cruiser

+0

Это работает! Спасибо. 'функция descendingOrder (n) { return + (n + '') .split (''). Sort ((a, b) => a

+0

У меня вопрос, который последует за этим, потому что я никогда не видел этого раньше, но в том числе + в самом начале вывода кажется мне странным. 'функция descendingOrder (n) { return + n.toString(). Split (''). Sort ((a, b) => a

Смежные вопросы