返回顶部
首页 > 资讯 > 精选 >JavaScript中toFixed()和正则表达式的坑怎么解决
  • 453
分享到

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

2023-06-30 06:06:09 453人浏览 安东尼
摘要

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

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

toFixed精度问题

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

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

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

--结束END--

本文标题: JavaScript中toFixed()和正则表达式的坑怎么解决

本文链接: https://lsjlt.com/news/327566.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • JavaScript中toFixed()和正则表达式的坑怎么解决
    本篇内容介绍了“JavaScript中toFixed()和正则表达式的坑怎么解决”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!toFixed...
    99+
    2023-06-30
  • jJavaScript中toFixed()和正则表达式的坑
    目录toFixed精度问题导致原因解决办法正则表达式全局匹配的坑toFixed精度问题 toFixed方法可以把Number四舍五入为指定小数位数的数字。可是大家看下下面这张图,发现...
    99+
    2024-04-02
  • 怎么理解javascript正则表达式
    本篇内容主要讲解“怎么理解javascript正则表达式”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么理解javascript正则表达式”吧!javascr...
    99+
    2024-04-02
  • JavaScript 正则表达式详解
    目录1. 正则表达式创建2. 使用模式2.1 使用简单模式2.2 使用特殊字符3. 应用3.1 切分字符串3.2 分组3.3 贪婪匹配3.4 正则表达式标志3.5 test() 方法...
    99+
    2024-04-02
  • JavaScript正则表达式怎么用
    这篇文章主要为大家展示了“JavaScript正则表达式怎么用”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“JavaScript正则表达式怎么用”这篇文章吧。什...
    99+
    2024-04-02
  • JavaScript正则表达式怎么记
    这篇文章给大家分享的是有关JavaScript正则表达式怎么记的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。我们知道,正则表达式是一个处理字符串中很实用的技巧。然而,即便是Jav...
    99+
    2024-04-02
  • 怎样理解JavaScript 正则表达式
    今天就跟大家聊聊有关怎样理解JavaScript 正则表达式,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。1. 正则表达式创建JavaScript 有两种方式创建正则表达式:第一种:...
    99+
    2023-06-25
  • JavaScript中的正则表达式怎么应用
    本篇内容主要讲解“JavaScript中的正则表达式怎么应用”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“JavaScript中的正则表达式怎么应用”吧!  正则表达式(regular expr...
    99+
    2023-06-03
  • JavaScript中正则表达式是怎样的
    JavaScript中正则表达式是怎样的,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。  好程序员web前端培训分享JavaScript学习笔...
    99+
    2024-04-02
  • 怎么使用javascript正则表达式
    本篇内容介绍了“怎么使用javascript正则表达式”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!表单验...
    99+
    2024-04-02
  • JavaScript正则表达式怎么创建
    本篇内容介绍了“JavaScript正则表达式怎么创建”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!1.JavaScript正则表达式的作用...
    99+
    2023-06-26
  • Javascript中正则表达式的应用详解
    目录stringsearchreplacematch:RegExp总结正则表达式 在前端中的应用也是比较常见的,我们在有时候也需要 用js 对某些字符串进行查找\捕获 或者 替换. ...
    99+
    2024-04-02
  • JavaScript中的正则表达式(2) (转)
    JavaScript中的正则表达式(2) (转)[@more@]正则表达式对象的属性及方法   预定义的正则表达式拥有有以下静态属性:input, multiline, lastMatch, lastParen, leftContext, ...
    99+
    2023-06-03
  • 详解JavaScript高级正则表达式
    目录JavaScript高级正则表达式1.正则表达式概述1.1什么是正则表达式1.2正则表达式的特点2.正则表达式在js中的使用2.1正则表达式的创建2.2测试正则表达式3.正则表达...
    99+
    2024-04-02
  • 如何理解JavaScript正则表达式
    如何理解JavaScript正则表达式,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。一、正则表达式创建var reg = /test/;var reg = new RegExp...
    99+
    2023-06-02
  • JavaScript正则表达式中g标志详解
    目录缘起解密过程搜索引擎源码层面结论缘起 有一天在思否社区看到有个问题,大致描述如下 const list = ['a', 'b', '-', 'c', 'd']; const re...
    99+
    2024-04-02
  • js正则表达式和php正则表达式有什么区别
    本教程操作环境:Windows10系统、javascript1.8.5&&PHP7.1版、Dell G3电脑。js正则表达式和php正则表达式有什么区别总体上,PHP的正则比标准javascript的要强大。PHP有两套正则...
    99+
    2017-12-02
    JavaScript PHP
  • 在python正则表达式中是怎样正确使用正则表达式
    这篇文章将为大家详细讲解有关在python正则表达式中是怎样正确使用正则表达式,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。现在我们已经看了一些简单的正则表达式,那么我们实际在 Python...
    99+
    2023-06-17
  • Python中使用正则表达式及正则表达式匹配规则详解
    目录1 导库2 使用模板3 说明4 示例5 正则表达式匹配规则1 导库 import re 2 使用模板 re_pattern = re.compile(pattern, flags...
    99+
    2023-03-22
    Python正则表达式匹配规则 Python正则表达式
  • JavaScript中正则表达式的实际应用详解
    实际工作中,JavaScript正则表达式还是经常用到的。所以这部分的知识是非常重要的。 一、基础语法: 第一种:字面量语法 var expression=/pattern/f...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作