首页 > 解决方案 > 对于较大的数组 - 返回 NaN 而不是数字

问题描述

我应该编写一个以字符串形式接收两个数字的函数。将第一个字符串乘以第二个字符串;返回值应该是结果的最后一位。

例如lastDigit("5", "2"),返回55 的 2 次方等于 25,最后一位是 5。

它像这样编写了我的函数:

   const lastDigit = (str1, str2) => {  
      const [head, ...tail] = Math.pow(parseInt(str1), parseInt(str2)).toString().split("").map(str => parseInt(str)).reverse();
      return head;
      }

对于较小的数字,该功能可以正常工作。但如果数字变高,它会以某种方式返回

这怎么可能解决?

标签: javascriptarrays

解决方案


问题是一些数字,比如 53 的 230 次方,对于 Javascript 来说太大了:它们会给你Infinity

console.log(53 ** 230);

然后,在您的代码中,当您尝试输入诸如in之类parseInt字母时,它将失败并给您.yInfinityNaN

作为一种解决方法,您可以一次将第一个数字相乘,使用模 10 仅提取那些位置,然后根据需要重复多次:

const lastDigit = (str1, str2) => {
  let num = Number(str1);
  const initial = num;
  const totalIterations = Number(str2);
  for (let i = 1; i < totalIterations; i++) {
    num = (num * initial) % 10;
  }
  return num;
}
console.log(lastDigit("53", "230"));


推荐阅读