javascript - 对于较大的数组 - 返回 NaN 而不是数字
问题描述
我应该编写一个以字符串形式接收两个数字的函数。将第一个字符串乘以第二个字符串;返回值应该是结果的最后一位。
例如lastDigit("5", "2")
,返回5
5 的 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;
}
对于较小的数字,该功能可以正常工作。但如果数字变高,它会以某种方式返回
钠
这怎么可能解决?
解决方案
问题是一些数字,比如 53 的 230 次方,对于 Javascript 来说太大了:它们会给你Infinity
:
console.log(53 ** 230);
然后,在您的代码中,当您尝试输入诸如in之类parseInt
的字母时,它将失败并给您.y
Infinity
NaN
作为一种解决方法,您可以一次将第一个数字相乘,使用模 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"));
推荐阅读
- mysql - Where 子句在我的 mysql 查询中不起作用
- powershell - 用于从远程桌面获取日志的 Powersheel 脚本
- html - 生成一个电子邮件按钮以将用户登录到没有 API 的网页
- c# - Excel 导出耗时过长
- c# - 访问 TFS 字段 TC 说明
- html - 将 html 菜单放在 jsfiddle 上。未封闭的正则表达式
- javascript - React JS内联样式不适用
- asp.net - 当我添加带有母版页的 asp.net 网页时,内容标签未加载(母版页有两个母版页
- css - 如果我使用 css 在其他输入上写一些东西,如何清除输入的值?
- jquery - 使用基于 ajax 分页的网格形式的数据表