千分位数字格式化(用逗号隔开 代码已做了修改 支持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 相关文章推荐
js压缩利器
Feb 20 Javascript
jQuery插件 selectToSelect使用方法
Oct 02 Javascript
Javascript基础教程之变量
Jan 18 Javascript
Vuex之理解Mutations的用法实例
Apr 19 Javascript
全选复选框JavaScript编写小结(附代码)
Aug 16 Javascript
基于Vue开发数字输入框组件
Dec 19 Javascript
微信小程序入口场景的问题集合与相关解决方法
Jun 26 Javascript
详解vuex的简单todolist例子
Jul 14 Javascript
微信小程序自定义tabBar在uni-app的适配详解
Sep 30 Javascript
Vue+elementUI实现多图片上传与回显功能(含回显后继续上传或删除)
Mar 23 Javascript
在vue项目中引用Antv G2,以饼图为例讲解
Oct 28 Javascript
如何在vue 中引入使用jquery
Nov 10 jQuery
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
用PHP和ACCESS写聊天室(四)
2006/10/09 PHP
PHP自动生成后台导航网址的最佳方法
2013/08/27 PHP
教你如何用php实现LOL数据远程获取
2014/06/10 PHP
PHP中常用的字符串格式化函数总结
2014/11/19 PHP
php树型类实例
2014/12/05 PHP
php利用cookie实现自动登录的方法
2014/12/10 PHP
教大家制作简单的php日历
2015/11/17 PHP
php源码的使用方法讲解
2019/09/26 PHP
ThinkPHP 框架实现的读取excel导入数据库操作示例
2020/04/14 PHP
学习YUI.Ext第五日--做拖放Darg&amp;Drop
2007/03/10 Javascript
权威JavaScript 中的内存泄露模式
2007/08/13 Javascript
利用JavaScript实现拖拽改变元素大小
2016/12/14 Javascript
详解前后端分离之VueJS前端
2017/05/24 Javascript
详解JS获取HTML DOM元素的8种方法
2017/06/17 Javascript
浅谈layer弹出层按钮颜色修改方法
2019/09/11 Javascript
vue.js实现双击放大预览功能
2020/06/23 Javascript
解决antd 下拉框 input [defaultValue] 的值的问题
2020/10/31 Javascript
[40:17]2018DOTA2亚洲邀请赛 4.5 淘汰赛 LGD vs Liquid 第一场
2018/04/06 DOTA
[57:59]完美世界DOTA2联赛循环赛 Ink Ice vs LBZS BO2第一场 11.05
2020/11/05 DOTA
Python中的数据对象持久化存储模块pickle的使用示例
2016/03/03 Python
python发送邮件功能实现代码
2016/07/15 Python
对Python生成汉字字库文字,以及转换为文字图片的实例详解
2019/01/29 Python
在macOS上搭建python环境的实现方法
2019/08/13 Python
python连接PostgreSQL数据库的过程详解
2019/09/18 Python
基于PyTorch的permute和reshape/view的区别介绍
2020/06/18 Python
Django-imagekit的使用详解
2020/07/06 Python
定制iPhone和Macbook保护壳:Slick Case
2018/11/21 全球购物
2019年c语言经典面试题目
2016/08/17 面试题
物流仓管员工作职责
2014/01/06 职场文书
对公司合理化的建议书
2014/03/12 职场文书
四风问题班子对照检查材料
2014/09/27 职场文书
事业单位个人查摆问题及整改措施
2014/10/28 职场文书
2015年办税服务厅工作总结
2015/07/23 职场文书
采购部年度工作总结
2015/08/13 职场文书
Nginx本地目录映射实现代码实例
2021/03/31 Servers
MySQL中VARCHAR与CHAR格式数据的区别
2021/05/26 MySQL