2015-05-19 2 views
0

Вот мой фрагмент кода, который работает на 4 цифры номера:Javascript получить обратную любую длину числа в парах с циклом

function rev(num) { 
 
    num = num.toString(); 
 

 
    var rev = Number(num[3]) * Math.pow(10, num.length - 1); 
 
    rev += Number(num[2]) * Math.pow(10, num.length - 2); 
 
    rev += Number(num[1]) * Math.pow(10, num.length - 3); 
 
    rev += Number(num[0]) * Math.pow(10, num.length - num.length); 
 

 
    var div = document.createElement('div'); 
 

 
    div.innerHTML = rev; 
 

 
    document.body.appendChild(div); 
 
} 
 

 
rev(1234);

Я хочу, чтобы запустить цикл для обратных любой количество. как я могу это получить? До сих пор я пытался:

function rev(num) { 
 
    num = num.toString(); 
 

 
    for (var i = 0; i < num.length; i++) { 
 
    if (i < num.length + 1) { 
 
     var rev = Number(num[i]) * Math.pow(10, num.length - i); 
 
    } else { 
 
     rev += Number(num[0]) * Math.pow(10, num.length - num.length); 
 
    } 
 
    } 
 

 
    var div = document.createElement('div'); 
 

 
    div.innerHTML = rev; 
 

 
    document.body.appendChild(div); 
 
} 
 

 
rev(1234);

NB: Я хочу только чистое решение JS, так как я учусь JS и NewBie

+0

Почему вы начинаете свой цикл в '1' вместо '0'? – Barmar

+1

'if (i Barmar

+0

Почему бы просто не использовать 'Array.reverse()'? – PHPglue

ответ

1

ли вам действительно нужно Math.pow. Почему бы не перевернуть как строку, когда вы начали делать и конвертировать в конце. И сделать это проще вы можете начать с конца:

function rev(num) { 
    num = num.toString(); 
    rev = "" 
    for (var i = num.length-1; i >= 0; i--) { 
rev += num[i] 

    } 

    var div = document.createElement('div'); 

    div.innerHTML = rev; 

    document.body.appendChild(div); 
} 

rev(1234); 
+0

Ahh, установка 'rev' в ноль была великолепной, и ей понравился легкий ответ. Мой ответ был: http://jsfiddle.net/z03rma6f/ какая трата .... большое спасибо, самый короткий ответ, и я думал что-то вроде этого – Asif

1

Вам не нужно вычесть num.length - i. В вашем обратном числе полномочия 10 соответствуют прямому положению в исходном номере.

function rev(num) { 
 
    num = num.toString(); 
 
    var rev = 0; 
 
    for (var i = 0; i < num.length; i++) { 
 
    rev += Number(num[i]) * Math.pow(10, i); 
 
    } 
 

 
    var div = document.createElement('div'); 
 

 
    div.innerHTML = rev; 
 

 
    document.body.appendChild(div); 
 
} 
 

 
rev(1234);

+0

Ahh, установка' rev' в ноль была великолепной, и мне понравился легкий ответ: http://jsfiddle.net/z03rma6f/ какая пустая трата ... Большое спасибо – Asif

0

Другая идея состоит в том, чтобы полностью изменить строку, полагаясь только на substr(). Вы можете создать свой собственный substr() тоже если надо ...

// reverse a string. this could be written much tighter, but 
 
// here it is making the recursive idea clear 
 
function revStr(string) { 
 
    if (!string.length) return string; 
 
    var l1 = string.length-1; 
 
    var firstChars = string.substr(0,l1); 
 
    var lastChar = string.substr(l1, 1); 
 
    return lastChar.concat(revStr(firstChars)); 
 
} 
 

 
function rev(number) { 
 
    var div = document.createElement('div'); 
 
    div.innerHTML = revStr(number.toString()); 
 
    document.body.appendChild(div); 
 
} 
 

 
rev(1234);

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