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

yizhihongxing

现在我们就来详细讲解“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日

相关文章

  • 推荐自用 Javascript 缩图函数 (onDOMLoaded)……

    推荐自用 Javascript 缩图函数 (onDOMLoaded) 完整攻略 简介 本文介绍如何使用自制的Javascript缩图函数,在网页加载完成时动态生成缩略图并缓存到浏览器。这个缩图函数可以实现对任何图片的缩放和加载加速,用户能够更快地预览高清图片,同时亦可以节省流量和加载时间。 准备工作 在开始之前,您需要了解一些前置知识: HTML, CSS和…

    JavaScript 2023年6月10日
    00
  • vue实践—vue不依赖外部资源实现简单多语操作

    下面是关于“vue实践—vue不依赖外部资源实现简单多语操作”的攻略。 1. 简介 在前端开发中,多语言支持是非常重要的一个功能。很多项目都需要支持多种语言,如中文、英文、日文等。Vue作为一种流行的前端框架,无疑是支持多语言的。但是,很多开发者在实现多语言功能时,会选择引入第三方外部库,如Vue-i18n等,这种做法虽然方便,但会导致代码的冗余和可维护…

    JavaScript 2023年6月11日
    00
  • js解决url传递中文参数乱码问题的方法详解

    我来详细为您讲解 “js解决url传递中文参数乱码问题的方法详解”。 1. 问题解决的原因和背景 在URL中传递中文参数时,常常会出现乱码的问题。这是因为URL中只能包含ASCII字符集(包括大小写字母、数字和特殊字符),而中文字符并不属于ASCII字符集。因此,在URL中传递中文参数时,必须对中文字符进行编码,将其转换为ASCII码。 一般情况下,我们会使…

    JavaScript 2023年5月19日
    00
  • Lottie动画前端开发使用技巧

    下面是关于 Lottie动画前端开发使用技巧的完整攻略。 背景 Lottie是由Airbnb开源的一个前端动画库,它可以将Adobe After Effects中的动画直接以Json文件的形式在 Web 应用展示,并且支持响应式、交互等功能,极大地提高了前端UI交互体验。在实际的项目中,使用Lottie可以减少开发人员的工作量,提高页面性能。 Lottie的…

    JavaScript 2023年6月11日
    00
  • JS箭头函数和常规函数之间的区别实例分析【 5 个区别】

    下面是详细的讲解。 什么是箭头函数 箭头函数是ECMAScript 6中新增的一种语法,用于定义函数。箭头函数相比常规函数,语法更加简洁,同时还有一些不同之处。箭头函数的语法如下: (param1, param2, …, paramN) => { statements } 其中,param1, param2, …, paramN表示函数的参数列表,st…

    JavaScript 2023年5月28日
    00
  • javascript replace()方法的简单分析

    JavaScript replace()方法的简单分析 1. replace()方法介绍 replace()方法是JavaScript中用于字符串替换的方法。它可以搜索字符串中所有与模式匹配的子串,并用另一个字符串来替换它们。replace()方法可以接收两个参数:要搜索的字符串(可以是字符串常量或正则表达式),以及要替换的新字符串。如果搜索字符串是正则表达…

    JavaScript 2023年5月28日
    00
  • JavaScript的11个小技巧整理

    JavaScript的11个小技巧整理 在这篇文章中,我们将学习JavaScript中一些有用的小技巧,这些技巧可能会使我们的代码更加简短和高效。 1. 数组拆分和连接 在JavaScript中,我们可以使用扩展运算符 … 来拆分和连接数组。 数组拆分 例如,我们可以将一个数组拆分成两个数组: const arr = [1, 2, 3, 4, 5]; c…

    JavaScript 2023年5月17日
    00
  • 深入浅析JS Function()构造函数

    深入浅析JS Function()构造函数 简介 Function()构造函数是JavaScript中的一个重要对象(Object),它可以用来定义和创建函数。由于JavaScript中的函数是一等公民(First-Class Citizen),因此Function()构造函数在JavaScript语言中具有非常重要的意义,我们可以使用它来定义匿名函数、闭包…

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