如何在javaScript中对给定的数字及其反向数字求和


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

做到!

最新更新