const reversedNum = num =>
parseFloat(num.toString().split('').reverse().join('')) * Math.sign(num)
console.log(reversedNum(456))
想不出如何写代码来求和654 + 456
非常感谢!
const reversedNum = num => num + +num.toString().split('').reverse().join('')
可以在函数中返回num和reversedNum的和。
const sumOfNumAndReversedNum= num => {
const reversedNum = parseFloat(num.toString().split('').reverse().join('')) * Math.sign(num)
return num + reversedNum
}
let userNumber = 456
console.log(sumOfNumAndReversedNum(userNumber))
您可以编写一种更高效的方法来反转数字,而不是将其转换为字符串,翻转它,然后将其转换回整数。
一种选择是通过弹出最后一个整数(例如,123 % 10 === 3
)并将其添加到新反转的数字中,从而向后遍历数。您还需要在每次迭代中将反转的数字乘以10
以移动到下一个度数。
例如给定数字123
:
123 % 10 = 3;
123 /= 10 = 12;
0 * 10 + 3 = 3;
1 % 10 = 2;
12 /= 10 = 1;
3 * 10 + 2 = 32
1 % 10 = 1;
1 /= 10 = 0;
32 * 10 + 1 = 321
此方法还将自动为您处理负数,留下如下内容:
function reverse(num) {
let reversed = 0;
while (num !== 0) {
const popped = num % 10;
num = parseInt(num / 10);
if (reversed > Number.MAX_VALUE / 10 || (reversed === Number.MAX_VALUE / 10 && popped > 7)) return 0;
if (reversed < Number.MIN_VALUE / 10 || (reversed === Number.MIN_VALUE / 10 && popped < -8)) return 0;
reversed = reversed * 10 + popped;
}
return reversed;
}
现在你可以简单地调用:
console.log(123 + reverse(123))
const reversedNum = num =>
Number(num.toString().split('').reverse().join(''))
console.log(reversedNum(456))
做到!