2016-08-15 17 views
1

하나의 숫자가 내림차순으로 재 배열되도록 함수를 사용하여 입력 숫자를 재정렬하려고합니다.숫자 반복 및 내림차순 정렬

예를 들어 234892984322이됩니다.

이것은 내가 생각해 낸 것입니다.

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

에스 o 실제로 게시 한 기능의 결과는 무엇입니까? – j08691

+0

귀하의 질문은 무엇입니까? 코드에 문제가 있습니까? –

+0

상당히 비효율적이지만 재미있다 :'+ (234892 + '') .split ('') reduce ((p, c, i) => (p [144 - c * 16 + i] = c, p), [ ]). join ('')'. 나는 대답할만한 가치가 있다고 생각하지 않습니까? ;-) – 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

이 작품! 고맙습니다. 'function descendingOrder (n) { return + (n + '') .split (''). sort ((a, b) => a

+0

이전에 본 적이 없기 때문에 질문에 대한 답변을 드리겠습니다. 그러나 출력의 맨 처음에 +를 포함하는 것이 이상하게 보입니다. 'function descendingOrder (n) { return + n.toString(). split ('') sort ((a, b) => a

관련 문제