js金额千分位的6种实现方法实例

现在我们就来详细讲解“js金额千分位的6种实现方法实例”的完整攻略。

什么是金额千分位?

在很多场景下,我们需要显示金融金额,而金融金额的显示习惯是每三个数加一个逗号(英文符号为“,”),以便于人类去识别和理解这个数值,这就是所谓金额千分位。

比如,10000.00元要进行金额千分位转换后为:10,000.00元。

6种实现金额千分位的方法

下面我们就来介绍6种实现金额千分位的方法:

方法一:正则表达式

function commafy(num) {
  num = num + '';
  var re = /(-?\d+)(\d{3})/;
  while (re.test(num))
  num = num.replace(re, '$1,$2')
  return num;
}

这个方法是采用正则表达式的方式来实现金额千分位,代码比较简单,并且可以完美的处理负数,但是在处理比较大的数字时,性能会有些问题。

方法二:toLocalString

function commafy(num) {
  return num.toLocaleString();
}

这个方法是使用JavaScript内置函数toLocaleString()来实现金额千分位,代码很简单,而且可以自动根据不同的地区和语言来显示千分位,但是这个函数并不是所有的浏览器都支持。

方法三:算法实现

function commafy(num) {
  if (isNaN(num)) return '';
  num = num + '';
  var reg = /(-?\d+)(\d{3})/;
  while (reg.test(num)) {
    num = num.replace(reg, '$1,$2');
  }
  return num;
}

这个方法是通过算法来实现金额千分位的,比方法一更加高效,并且处理负数和小数点的情况更加准确,但是代码相对来说比较繁琐。

方法四:简单算法实现

function commafy(num) {
  var arr = num.split('.');
  var intPart = arr[0].replace(/\B(?=(\d{3})+$)/g, ',');
  var decPart = (arr[1] ? '.' + arr[1] : '');
  return intPart + decPart;
}

这个方法是与方法三类似,只是代码更加简洁易懂,也比较高效,但是也需要注意小数点的情况。

方法五:递归算法实现

function commafy(num) {
  if (isNaN(num)) return '';
  var numArr = num.split('.');
  var intPart = numArr[0].replace(/\d(?=(\d{3})+$)/g, (match) => match + ',');
  return intPart + (numArr[1] ? '.' + numArr[1] : '');
}

这个方法同样是采用递归算法来实现金额千分位,还是使用了正则表达式来做替换,代码比较简洁高效。

方法六:自定义Number类型的方法

Number.prototype.commafy = function(){
  var str = this + ''
  var result = str.split('.').join('').split('').reverse().join('').match(/(\d{1,3})/g).join(',').split('').reverse().join('') 
  if(this < 0) {
    result = '-' + result
  }
  var dotIndex = str.indexOf('.')
  if(dotIndex !== -1) {
    return result + '.' + str.substring(dotIndex + 1)
  } else{
    return result
  }
}

这个方法是通过自定义Number类型的原型方法来实现金额千分位的,可以在任何数字类型的变量上直接使用该方法来实现,代码比较精简,但可能会造成Number类型的原型链污染,需要考虑到这一点。

示例

下面我们来看一个示例:

const num = 1000000000000000;
console.log(commafy(num)); // 1,000,000,000,000,000

通过调用commay函数来将一个非常大的数字转换为千分位格式后输出。

还有一个更加直接的示例:

<!DOCTYPE html>
<html>
<head>
  <title></title>
  <meta charset='utf-8'>
  <meta name='viewport' content='width=device-width, initial-scale=1'>
</head>
<body>
  <input type='text' id='input' oninput='changeValue()'>
  <script>
    function changeValue() {
      const inputEl = document.querySelector('#input');
      inputEl.value = commafy(inputEl.value);
    }

    function commafy(num) {
      if (isNaN(num)) return '';
      var numArr = num.split('.');
      var intPart = numArr[0].replace(/\d(?=(\d{3})+$)/g, match => match + ',');
      return intPart + (numArr[1] ? '.' + numArr[1] : '');
    }
  </script>
</body>
</html>

这里我们使用input标签的输入事件来动态的将输入框内的内容变成千分位格式,通过这样的方式,我们可以在页面上类似银行或电商的场景下使用该方法。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:js金额千分位的6种实现方法实例 - Python技术站

(0)
上一篇 2023年5月28日
下一篇 2023年5月28日

相关文章

  • HTML5中视频音频的使用详解

    HTML5中视频音频的使用详解 HTML5提供了一种在网页中嵌入音频和视频的新方法,使得开发者可以更好地控制和展示媒体内容。本篇攻略将为您详细讲解如何在HTML5中使用音频和视频。 视频标签 HTML5 提供了一个用于嵌入视频的 “video” 标签。如下所示: <video controls> <source src="movi…

    JavaScript 2023年6月11日
    00
  • 精通JS正则表达式(推荐)

    精通JS正则表达式(推荐)攻略 什么是正则表达式? 正则表达式是一种用于匹配字符串模式的工具,它可以帮助我们对字符串进行复杂的匹配和替换操作。JavaScript中的正则表达式是由一个模式和一些可选的标志组成的。 正则表达式的语法 在 JavaScript 中,正则表达式是包含在斜杠之间的模式,如下所示: var pattern = /test/; // 匹…

    JavaScript 2023年6月10日
    00
  • JS设置cookie、读取cookie、删除cookie

    下面是JS设置cookie、读取cookie、删除cookie的完整攻略: 1. 设置Cookie 我们可以通过JS来设置cookie,具体方法如下: // 设置cookie document.cookie = "cookieName=cookieVal; expires=Sun, 1 Jan 2023 00:00:00 UTC; path=/&q…

    JavaScript 2023年6月11日
    00
  • jquery.qtip提示信息插件用法简单实例

    下面就来详细讲解“jquery.qtip提示信息插件用法简单实例”的完整攻略。 什么是jquery.qtip提示信息插件 jquery.qtip提示信息插件是一个jQuery插件,它可以用来在页面中快速、方便地创建提示信息。其使用简单,功能强大,支持各种提示效果,是一款非常实用的前端开发工具。 jquery.qtip提示信息插件的安装和使用 jquery.q…

    JavaScript 2023年6月11日
    00
  • js超时调用setTimeout和间歇调用setInterval实例分析

    JS超时调用setTimeout和间歇调用setInterval实例分析 setTimeout函数 setTimeout函数是JS中的一个高级函数,可以实现代码的延时执行。 语法: setTimeout(function, delay, param1, param2, …) function:必选参数,是需要延时执行的函数或一个字符串经过编译生成的JS代…

    JavaScript 2023年6月10日
    00
  • 解析前端面试题2019年小米工程师面试题(附答案)

    这里给出详细讲解“解析前端面试题2019年小米工程师面试题(附答案)”的完整攻略。 前言 本文将对2019年小米工程师面试题进行分析和解答,其中涉及到的知识点基本全面,包括ES6、CSS、HTTP等内容。本文旨在帮助读者更深入理解前端知识,提高应对面试的能力。 攻略 下面按照题目出现顺序,逐个进行解答。 1. 给出题目vue的几种优化 该题目主要考察了对Vu…

    JavaScript 2023年5月19日
    00
  • 动态加载JavaScript文件的两种方法

    当我们开发网站时,通常需要使用JavaScript来实现一些交互式效果,但是如果我们在HTML中直接将JavaScript代码写在页面中的话,会造成页面加载速度变慢,如果JavaScript代码很大的话,可能会严重影响用户体验。那么,如何能够提高网站的加载速度呢?答案是:动态加载JavaScript。 动态加载JavaScript的优势有: 减少页面的加载时…

    JavaScript 2023年5月27日
    00
  • JS面向对象之多选框实现

    JS面向对象之多选框实现是一个比较基础的JavaScript面向对象应用,它的实现过程也相对简单,下面我将为大家详细讲解其完整攻略。 一、需求分析 在实现之前,我们需要先进行需求分析。在本次多选框实现中,我们需要完成以下几个基本功能: 点击某个多选框实现选中或取消选中该选项的功能; 点击“全选”按钮,所有多选框均被选中; 点击“取消全选”按钮,所有多选框均被…

    JavaScript 2023年6月10日
    00
合作推广
合作推广
分享本页
返回顶部