百度面试题:js处理千分位分割

2023-10-22 21:20

本文主要是介绍百度面试题:js处理千分位分割,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

问题:使用js进行千分位分割?
使用正则表达式解决。
参考第三方npm库 thousandify 的源码,梳理了一下,主要方法在thousandify中。

该方法的思想是:正则表达式
1、正则判断输入内容是否为数字。
2、将输入内容以小数点“.”分开,分为整数位和小数位。
3、对于整数位,进行千分位划分。正则判断从末尾开始每三位数前面加逗号分隔符“,”。
4、对小数位,直接截取,默认截取2位。
5、再用小数点将整数位和小数位拼接起来。
到此完成。

   "use strict";let toString = Object.prototype.toString;let charsetRegExp = /^[\d\.]+$/;let defaultOption = {thousandSeparator: ",", // 千分位分隔符decimalSeparator: ".", // 小数分隔符decimalDigits: false, // 小数位数量, false表示不特殊处理};function isNumber(target) {return toString.call(target) === "[object Number]";}function thousandify(amount, option) {let parsedAmount = amount + "";if (!charsetRegExp.test(parsedAmount)) {return amount;}let options = Object.assign({}, defaultOption, option),decimalSeparator = options.decimalSeparator,// 小数位分隔符thousandSeparator = options.thousandSeparator,// 千分位分隔符decimalDigits = options.decimalDigits;// 小数位数// 将小数部分与整数部分分隔开let amountParts = parsedAmount.split(decimalSeparator);// 整数部分,从末尾开始每三位数前面插入千分位let intPartStr = amountParts[0].replace(/(?!^)(?=(\d{3})+$)/g, thousandSeparator); // 小数部分let decimalStr = amountParts[1] || "";// 截取小数位数,不处理精度,仅截取if (isNumber(decimalDigits)) {decimalStr = decimalStr.substr(0, decimalDigits)}return !!decimalStr ? [intPartStr, decimalStr].join(decimalSeparator) : intPartStr;}console.log(thousandify(182918.928,{decimalDigits: 2}));

效果图:
效果
注:这只是千分位分割,不处理精度(无四舍五入)。

简单的千分位分割方法:

function comma(num) {let source = String(num).split(".");//按小数点分成2部分source[0] = source[0].replace(new RegExp('(\\d)(?=(\\d{3})+$)','ig'),"$1,");//只将整数部分进行都好分割return source.join(".");//再将小数部分合并进来
}

这篇关于百度面试题:js处理千分位分割的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/263632

相关文章

JS常用组件收集

收集了一些平时遇到的前端比较优秀的组件,方便以后开发的时候查找!!! 函数工具: Lodash 页面固定: stickUp、jQuery.Pin 轮播: unslider、swiper 开关: switch 复选框: icheck 气泡: grumble 隐藏元素: Headroom

百度/小米/滴滴/京东,中台架构比较

小米中台建设实践 01 小米的三大中台建设:业务+数据+技术 业务中台--从业务说起 在中台建设中,需要规范化的服务接口、一致整合化的数据、容器化的技术组件以及弹性的基础设施。并结合业务情况,判定是否真的需要中台。 小米参考了业界优秀的案例包括移动中台、数据中台、业务中台、技术中台等,再结合其业务发展历程及业务现状,整理了中台架构的核心方法论,一是企业如何共享服务,二是如何为业务提供便利。

无人叉车3d激光slam多房间建图定位异常处理方案-墙体画线地图切分方案

墙体画线地图切分方案 针对问题:墙体两侧特征混淆误匹配,导致建图和定位偏差,表现为过门跳变、外月台走歪等 ·解决思路:预期的根治方案IGICP需要较长时间完成上线,先使用切分地图的工程化方案,即墙体两侧切分为不同地图,在某一侧只使用该侧地图进行定位 方案思路 切分原理:切分地图基于关键帧位置,而非点云。 理论基础:光照是直线的,一帧点云必定只能照射到墙的一侧,无法同时照到两侧实践考虑:关

在JS中的设计模式的单例模式、策略模式、代理模式、原型模式浅讲

1. 单例模式(Singleton Pattern) 确保一个类只有一个实例,并提供一个全局访问点。 示例代码: class Singleton {constructor() {if (Singleton.instance) {return Singleton.instance;}Singleton.instance = this;this.data = [];}addData(value)

【生成模型系列(初级)】嵌入(Embedding)方程——自然语言处理的数学灵魂【通俗理解】

【通俗理解】嵌入(Embedding)方程——自然语言处理的数学灵魂 关键词提炼 #嵌入方程 #自然语言处理 #词向量 #机器学习 #神经网络 #向量空间模型 #Siri #Google翻译 #AlexNet 第一节:嵌入方程的类比与核心概念【尽可能通俗】 嵌入方程可以被看作是自然语言处理中的“翻译机”,它将文本中的单词或短语转换成计算机能够理解的数学形式,即向量。 正如翻译机将一种语言

Node.js学习记录(二)

目录 一、express 1、初识express 2、安装express 3、创建并启动web服务器 4、监听 GET&POST 请求、响应内容给客户端 5、获取URL中携带的查询参数 6、获取URL中动态参数 7、静态资源托管 二、工具nodemon 三、express路由 1、express中路由 2、路由的匹配 3、路由模块化 4、路由模块添加前缀 四、中间件

荣耀嵌入式面试题及参考答案

在项目中是否有使用过实时操作系统? 在我参与的项目中,有使用过实时操作系统。实时操作系统(RTOS)在对时间要求严格的应用场景中具有重要作用。我曾参与的一个工业自动化控制项目就采用了实时操作系统。在这个项目中,需要对多个传感器的数据进行实时采集和处理,并根据采集到的数据及时控制执行机构的动作。实时操作系统能够提供确定性的响应时间,确保关键任务在规定的时间内完成。 使用实时操作系统的

EasyPlayer.js网页H5 Web js播放器能力合集

最近遇到一个需求,要求做一款播放器,发现能力上跟EasyPlayer.js基本一致,满足要求: 需求 功性能 分类 需求描述 功能 预览 分屏模式 单分屏(单屏/全屏) 多分屏(2*2) 多分屏(3*3) 多分屏(4*4) 播放控制 播放(单个或全部) 暂停(暂停时展示最后一帧画面) 停止(单个或全部) 声音控制(开关/音量调节) 主辅码流切换 辅助功能 屏

一些其他面试题

阿里二面:那你来说说定时任务?单机、分布式、调度框架下的定时任务实现是怎么完成的?懵了。。_哔哩哔哩_bilibili 1.定时算法 累加,第二层每一个格子是第一层的总时间400 ms= 20 * 20ms 2.MQ消息丢失 阿里二面:高并发场景下引进消息队列有什么问题?如何保证消息只被消费一次?真是捏了一把汗。。_哔哩哔哩_bilibili 发送消息失败

Thymeleaf:生成静态文件及异常处理java.lang.NoClassDefFoundError: ognl/PropertyAccessor

我们需要引入包: <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-thymeleaf</artifactId></dependency><dependency><groupId>org.springframework</groupId><artifactId>sp