千家信息网

JavaScript中toFixed()和正则表达式的坑怎么解决

发表于:2025-11-07 作者:千家信息网编辑
千家信息网最后更新 2025年11月07日,本篇内容介绍了"JavaScript中toFixed()和正则表达式的坑怎么解决"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大
千家信息网最后更新 2025年11月07日JavaScript中toFixed()和正则表达式的坑怎么解决

本篇内容介绍了"JavaScript中toFixed()和正则表达式的坑怎么解决"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

toFixed精度问题

toFixed方法可以把Number四舍五入为指定小数位数的数字。可是大家看下下面这张图,发现了什么?

0.985四舍五入之后变成了0.98!!

  • 这就是toFixed方法的坑。

导致原因

那这到底是怎么回事呢?本质其实是因为js小数的精度问题。 在计算机中计算,是将数字转成二进制,进行计算之后再转化为十进制。 比如将0.985转化为二进制是0.1111110000101000(超出精度,结果保留了16位小数),此时再将该二进制转化为十进制结果为:0.9849853515625,此时将他保留两位小数就成了0.98

解决办法

  • 那么要如何避免这种问题呢?可以用下面的方法来补充原生的toFixed方法

toFixed(number, precision) {    var str = number + "";    var len = str.length;    var last = str.substring(len - 1, len);    var afterPoint = str.substring(str.indexOf(".") + 1, len);    if (last == "5" && afterPoint.length > precision) {        last = "6";        str = str.substring(0, len - 1) + last;        return (str - 0).toFixed(precision);    } else {        return number.toFixed(precision);    }},

正则表达式全局匹配的坑

有这么一个需求,select支持可以搜索item。刚看到我就兴致冲冲去写了,这还不简单吗,输入的数据和select中的数据源进行正则匹配,匹配到的就是搜索到的。

过滤函数我是这么写的:

//searchKey是输入的数据const regex = new RegExp(searchKey.trim(), 'gi');let dataSource = [    {        value: 'test1',    },    {        value: 'test2',    },];let res = dataSource    .map((i) => {            let _flag = regex.test(i.value);            i.visible = _flag;            return i;    })    .filter((i) => i.visible);

但是实际运行时,发现数据源中的数据,有的可以匹配到有的匹配不到。当时就纳闷了,这有什么问题吗?最后几经查找答案,原来是正则表达式的全局匹配有个坑:正则表达式中有一个lastIndex的属性,这个属性表示上一次匹配文本结果之后的第一个字符的位置。他在下一次查找的时候,会从lastIndex往后继续查找,这就会导致一下个匹配返回false。

那么如何解决呢?

因为lastIndex属性是可读可写的,所以我这里的解决办法是每次test方法之后将将lastIndex置为零,这样每次匹配都将会从最开始进行查找。这样就会避免这个问题了哦!

let _flag = regex.test(i.value);regex.lastIndex = 0;

"JavaScript中toFixed()和正则表达式的坑怎么解决"的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注网站,小编将为大家输出更多高质量的实用文章!

正则 表达式 数据 方法 问题 小数 二进制 属性 精度 结果 四舍五入 全局 内容 办法 十进制 实际 就是 数字 数据源 更多 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 上海新时代网络技术出厂价格 数据库count 用法 企业文档管理系统服务器 网络安全防篡改防攻击 计算机网络安全与管理论文答辩 无人机飞机安全数据库需要更新嘛 山东省网络安全进校园 肇庆销售软件开发咨询 顺丰数据库导入不成功 搭建个人dns去广告服务器 网络安全校园日江苏 sql数据库外键操作 闵行区大型软件开发服务 app软件开发百度云 石油公司局域网网络安全管理 删除视频抖音数据库 吉林大学华为信息与网络技术 服务器core数量 基岩版如何玩dream的服务器 文件夹存在但无法创建数据库 行业应用软件开发提供商 弘客深圳网络技术有限公司 数据库的结构主要由什么构成 出入境开展网络安全教育 车辆管理系统数据库设计含程序 如何通过ip地址查网站数据库 网络安全教育活动回执单 数据库中安全的等于 数据库安全的意义和重要性 2020网络安全为人民视频
0