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日

相关文章

  • ToolTip 通过Js实现代替超链接中的title效果

    介绍一下如何用JS实现ToolTip代替超链接中的title效果: 1. 理解ToolTip ToolTip 是一种在鼠标移动到某个元素上时(通常为超链接)出现的提示信息。通常很多网站会在链接上添加title属性,这个属性值即为ToolTip中的文本。然而,title属性的提示框样式是完全受操作系统控制的,不能自定义样式,且无法加入图片、超链接等内容。因此,…

    JavaScript 2023年6月10日
    00
  • JS面向对象实现飞机大战

    本文将为大家详细讲解如何使用面向对象的编程思想来实现飞机大战游戏。 确定类的结构 在面向对象编程中,我们首先需要确定类的结构。针对飞机大战游戏,我们可以考虑设计如下几个类: 游戏引擎类(GameEngine):负责游戏的初始化、启动和停止等操作; 飞机类(Aircraft):表示游戏中的玩家飞机和敌机,包含飞机的位置、速度、血量等属性以及移动、射击等方法; …

    JavaScript 2023年6月10日
    00
  • 原生JS:Date对象全面解析

    原生JS:Date对象全面解析 什么是Date对象 Date 对象是 JavaScript 中的内置对象,用于处理日期和时间。可以使用 new 关键字实例化一个 Date 对象。 var now = new Date(); 上述代码会返回一个 Date 对象,表示当前的日期和时间。 Date对象的方法和属性 获取年份,月份和日期 Date 对象提供了获取其表…

    JavaScript 2023年5月27日
    00
  • JS动画定时器知识总结

    标题:JS动画定时器知识总结 正文: 1. 前言 在前端开发中,动画交互是一个很重要的部分。JS定时器作为动画交互的实现方式之一,在使用过程中存在着一些需要注意的点。本文将针对JS动画定时器进行一个总结,希望能对读者在动画交互的应用中提供一些帮助。 2. 定时器概念 在JavaScript中,有两种定时器:setInterval()和setTimeout()…

    JavaScript 2023年6月10日
    00
  • 详解Javascript中DOM的范围

    详解Javascript中DOM的范围 什么是DOM范围 在Javascript中,DOM(Document Object Model)是指用来描述HTML文档结构的树形结构模型。而DOM范围则是指在Javascript中,我们可以对DOM树进行操作的范围。 一个DOM范围由以下几个组成部分: 起始边界点(start boundary point):范围的开…

    JavaScript 2023年6月10日
    00
  • JS实现基于Sketch.js模拟成群游动的蝌蚪运动动画效果【附demo源码下载】

    概述 本文将介绍如何使用JS实现基于Sketch.js模拟成群游动的蝌蚪运动动画效果。Sketch.js是一个轻量级的库,用于创建基于HTML5画布的交互式Web应用程序。该库提供了许多工具和方法,使用户可以轻松地在画布上绘制、擦拭、编辑和操作对象。本文将通过实现蝌蚪游动动画效果,介绍如何使用Sketch.js来创作基于交互式画布的动态Web应用程序。 实现…

    JavaScript 2023年5月28日
    00
  • vue router的基本使用和配置教程

    以下是关于“vue router的基本使用和配置教程”的详细攻略: 背景介绍 Vue是一个流行的JavaScript库,它提供了一种轻量级的方式来构建交互式Web界面。Vue Router是作为Vue.js的官方路由管理器而开发的。借助Vue Router,您可以在多个视图之间进行无缝导航。本文将介绍如何使用Vue Router。 一、安装Vue Route…

    JavaScript 2023年6月11日
    00
  • 判断一个变量是数组Array类型的方法

    判断一个变量是否为数组类型的方法: 有多种方法来判断一个变量是否为数组类型,下面介绍其中的几种方法: 方法一:使用Array.isArray()方法 Array.isArray()方法可以判断传入的参数是否为数组类型,若为数组类型,返回true;否则返回false。 示例代码如下: const arr = [1, 2, 3]; console.log(Arr…

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