千分位数字格式化(用逗号隔开 代码已做了修改 支持0-9位逗号隔开)的JS代码


Posted in Javascript onDecember 05, 2013

最近做项目需要我们前端对金额进行千分位格式化(也就是说每三位用逗号隔开),代码已经做了修改  之前的版本是本人疏忽 真对不住大家了!现在已经做了修改 如果还有不完善的地方 请大家多多指教!

1. 支持用逗号隔开 0-9位 逗号隔开

JS代码如下:

/**
         * JS格式化
         * @param number 要格式化的数字
         * @param d [0-9]位 逗号隔开
         */         function numFormat(number,d) {
             var numArrs = ['0','1','2','3','4','5','6','7','8','9'],
                 REG_NUMBER = /^\d+(.\d+)?$/;
             d = d || 3; // 不传 是3位 千分位

             if(isNumber(number) || isString(number) || REG_NUMBER.test(number)) {
                 // 先转换成字符串
                 var toString = number + '',
                     isPoint = toString.indexOf('.'),
                     prefix,   // 前缀
                     suffix,   // 后缀
                     t = '';
                 if(isPoint > 0) {
                    prefix = toString.substring(0,isPoint);
                    suffix = toString.substring(isPoint + 1);
                 }else if(isPoint == 0) {
                    prefix = '';
                    suffix = toString.substring(1);
                 }else {
                    prefix = toString;
                    suffix = '';
                 }
                 if(prefix != '') {
                    prefixArr = prefix.split('').reverse();
                    var isArrayIndex = isArray(d,numArrs);
                    if(isArrayIndex > -1) {
                        for(var i = 0, ilen = prefixArr.length; i < ilen; i+=1) {
                            t += prefixArr[i] + ((i + 1) % isArrayIndex == 0 && (i + 1) != prefixArr.length ? "," : "");
                        }
                        t = t.split("").reverse().join("");
                        if(suffix != '') {
                            return t + "." + suffix;
                        }else {
                            return t;
                        }
                    }else {
                        return '传入的多少位不正确';
                    }
                 }else if(prefix != '' && suffix == ''){
                    return prefix;
                 }else if(prefix == '' && suffix != ''){
                    prefix = 0;
                    return prefix + suffix;
                 }else {
                     return "有错误";
                 }
            }else {
                return '传入的要格式化的数字不符合';
            }
         }
         function isArray(item,arrs) {
            for(var i = 0, ilen = arrs.length; i < ilen; i++) {
                if(item == arrs[i]) {
                    return i;
                }
            }
            return -1;
         }
         function isNumber(number) {
            return Object.prototype.toString.apply(number) === '[object Number]';
         }
         function isString(number) {
            return Object.prototype.toString.apply(number) === ['object String'];
         }

但是貌似还有一个不完善的地方 就是 我这样调用 console.log(numFormat("1111.00"));  在控制台上 直接输出 1,111 而不是1,111.00 也就是说 如果小数点后面的是 0的话 游览器自动会抹掉后面的0 其他的都正常!本人测试了下 基本符合要求 如有不完善的地方 请大家多多指教!

Javascript 相关文章推荐
jquery中ajax学习笔记3
Oct 16 Javascript
jquery 动态创建元素的方式介绍及应用
Apr 21 Javascript
js获取select标签的值且兼容IE与firefox
Dec 30 Javascript
javascript中使用正则计算中文长度的例子
Apr 29 Javascript
javascript中call,apply,bind的用法对比分析
Feb 12 Javascript
js获取元素的外链样式的简单实现方法
Jun 06 Javascript
layui表格实现代码
May 20 Javascript
JS使用遮罩实现点击某区域以外时弹窗的弹出与关闭功能示例
Jul 31 Javascript
vue服务端渲染缓存应用详解
Sep 12 Javascript
解决vue单页面修改样式无法覆盖问题
Aug 05 Javascript
Vite和Vue CLI的优劣
Jan 30 Vue.js
JavaScript组合继承详解
Nov 07 Javascript
jquery导航制件jquery鼠标经过变色效果示例
Dec 05 #Javascript
javascript拖拽上传类库DropzoneJS使用方法
Dec 05 #Javascript
jquery上传插件fineuploader上传文件使用方法(jquery图片上传插件)
Dec 05 #Javascript
JS获取html对象的几种方式介绍
Dec 05 #Javascript
JS获取URL中的参数数据
Dec 05 #Javascript
jquery插件tooltipv顶部淡入淡出效果使用示例
Dec 05 #Javascript
浅谈JavaScript函数参数的可修改性问题
Dec 05 #Javascript
You might like
计数器详细设计
2006/10/09 PHP
加速XP搜索功能堪比vista
2007/03/22 PHP
PHP判断远程url是否有效的几种方法小结
2011/10/08 PHP
分享一下贝贝成长进度的php代码
2012/09/14 PHP
php实现多维数组中每个单元值(数字)翻倍的方法
2015/02/16 PHP
关于PHP中字符串与多进制转换函数的实例代码
2016/11/03 PHP
PHP利用Cookie设置用户30分钟未操作自动退出功能
2017/07/03 PHP
Aster vs KG BO3 第一场2.19
2021/03/10 DOTA
些很实用且必用的小脚本代码
2006/06/26 Javascript
判断对象是否Window的实现代码
2012/01/10 Javascript
JS按字节截取字符长度实例
2013/11/20 Javascript
js和css写一个可以自动隐藏的悬浮框
2014/03/05 Javascript
jquery实现简单实用的打分程序实例
2015/07/23 Javascript
解析NodeJS异步I/O的实现
2017/04/13 NodeJs
javascript如何用递归写一个简单的树形结构示例
2017/09/06 Javascript
nodejs结合socket.io实现websocket通信功能的方法
2018/01/12 NodeJs
JS+HTML实现的圆形可点击区域示例【3种方法】
2018/08/01 Javascript
小程序分享模块超级详解(推荐)
2019/04/10 Javascript
layui清空,重置表单数据的实例
2019/09/12 Javascript
JS实现悬浮球只在一侧滑动并且是横屏状态下
2020/08/19 Javascript
如何使用JavaScript实现无缝滚动自动播放轮播图效果
2020/08/20 Javascript
RC4文件加密的python实现方法
2015/06/30 Python
如何使用python爬取csdn博客访问量
2016/02/14 Python
在Python中关于使用os模块遍历目录的实现方法
2019/01/03 Python
使用OpenCV实现仿射变换—平移功能
2019/08/29 Python
英国地毯卖家:The Rug Seller
2019/07/18 全球购物
阿里巴巴的Oracle DBA笔试题答案-SQL tuning类
2016/04/03 面试题
博士研究生自我鉴定范文
2013/12/04 职场文书
高中军训感言200字
2014/02/23 职场文书
求职信名称怎么写
2014/05/26 职场文书
小区推广策划方案
2014/06/06 职场文书
单位一把手群众路线四风问题整改措施
2014/09/25 职场文书
无房产证房屋转让协议书合同样本
2014/10/18 职场文书
《月球之谜》教学反思
2016/02/20 职场文书
端午节将至,用Python爬取粽子数据并可视化,看看网友喜欢哪种粽子吧!
2021/06/11 Python
【海涛dota解说】DCG联赛第一周 LGD VS DH
2022/04/01 DOTA