这是我的代码片段,适用于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
答案 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);