📜  反转 JavaScript 中的数字(1)

📅  最后修改于: 2023-12-03 14:50:35.874000             🧑  作者: Mango

反转 JavaScript 中的数字

在 JavaScript 中,想要将一个数字反转,有多种方式可以实现。本文将介绍三种方法。

方法一:使用字符串翻转再转成数字

这是最简单的方法。我们将数字转成字符串,然后将字符串反转,最后再将其转回数字类型即可。

function reverseNumber1(num) {
  const reversedNum = parseInt(num.toString().split('').reverse().join(''));
  return reversedNum * Math.sign(num);
}

这里使用了三个字符串方法:toString() 将数字转成字符串,split() 将字符串转成字符的数组,reverse() 反转数组元素的顺序,join() 将数组转回字符串。最后要注意将得到的结果乘以数字的符号,以保持其正负性。

方法二:使用取余和整除

这是一种更直观的方法。我们通过不断地取当前数字的最后一位,添加到结果上,并不断地将数字除以10来缩小规模。当数字为0时,循环停止。

function reverseNumber2(num) {
  let reversedNum = 0;
  while (num !== 0) {
    const lastDigit = num % 10;
    reversedNum = reversedNum * 10 + lastDigit;
    num = Math.trunc(num / 10);
  }
  return reversedNum * Math.sign(num);
}

这里使用了两个数学函数:Math.trunc() 取整函数,保证了整除运算的正确性;Math.sign() 符号函数,保证了结果的正负性。

方法三:使用递归

这是一种优雅但不太高效的方法。我们可以先得到当前数字的最后一位,然后将其乘以10的次幂,递归地将剩余部分传递给函数,并与这个数值相加。

function reverseNumber3(num) {
  if (num < 10) {
    return num;
  }
  const lastDigit = num % 10;
  const remainingDigits = Math.trunc(num / 10);
  const reversedNum = reverseNumber3(remainingDigits);
  return lastDigit * Math.pow(10, num.toString().length - 1) + reversedNum;
}

这里使用了一个 JavaScript 内置函数:Math.pow() 幂函数。同时,由于递归次数较多,这种方法在处理大量数据时可能不够高效。