Javascript使用for循环在param中反转任意长度的数字

时间:2015-05-19 00:20:56

标签: javascript

这是我的代码片段,适用于4位数字:

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);

我想运行for循环来反转任意数量的数字。我该怎么办? 到目前为止,我已经尝试过:

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

3 个答案:

答案 0 :(得分: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);

答案 1 :(得分: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);

答案 2 :(得分: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);