千分位数字格式化(用逗号隔开 代码已做了修改 支持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 相关文章推荐
基于MVC3方式实现下拉列表联动(JQuery)
Sep 02 Javascript
jQuery制作简洁的多级联动Select下拉框
Dec 23 Javascript
jQuery常用数据处理方法小结
Feb 20 Javascript
jQuery中的each()详细介绍(推荐)
May 25 Javascript
AngularJS基础 ng-cut 指令介绍及简单示例
Aug 01 Javascript
Angularjs使用directive自定义指令实现attribute继承的方法详解
Aug 05 Javascript
微信小程序 仿美团分类菜单 swiper分类菜单
Apr 12 Javascript
详解angularJS自定义指令间的相互交互
Jul 05 Javascript
js导出Excel表格超出26位英文字符的解决方法ES6
Nov 15 Javascript
vue实现自定义多选与单选的答题功能
Jul 05 Javascript
深入理解Node内建模块和对象
Mar 12 Javascript
浅谈es6中的元编程
Dec 01 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
Discuz 模板引擎的封装类代码
2008/07/18 PHP
PHP管理依赖(dependency)关系工具 Composer的自动加载(autoload)
2014/08/18 PHP
Zend Framework框架Smarty扩展实现方法
2016/03/22 PHP
javascript Discuz代码中的msn聊天小功能
2008/05/25 Javascript
Chrome中模态对话框showModalDialog返回值问题的解决方法
2010/05/25 Javascript
一个很简单的jquery+xml+ajax的无刷新树结构(无css,后台是c#)
2010/06/02 Javascript
jquery.boxy插件的iframe扩展代码
2010/07/02 Javascript
jQuery EasyUI NumberBox(数字框)的用法
2010/07/08 Javascript
Jquery 1.9.1源码分析系列(十二)之筛选操作
2015/12/02 Javascript
JavaScript编程中实现对象封装特性的实例讲解
2016/06/24 Javascript
JS用斜率判断鼠标进入DIV四个方向的方法
2016/11/07 Javascript
JS实现旋转木马式图片轮播效果
2017/01/18 Javascript
jquery uploadify如何取消已上传成功文件
2017/02/08 Javascript
详解webpack 如何集成第三方js库
2017/06/29 Javascript
vue动态绑定组件子父组件多表单验证功能的实现代码
2018/05/14 Javascript
layui表格分页 记录勾选的实例
2019/09/02 Javascript
Angular单元测试之事件触发的实现
2020/01/20 Javascript
Vue 技巧之控制父类的 slot
2020/02/24 Javascript
[04:29]DOTA2亚洲邀请赛小组赛第一日 TOP10精彩集锦
2015/02/01 DOTA
Flask 让jsonify返回的json串支持中文显示的方法
2018/03/26 Python
pandas修改DataFrame列名的方法
2018/04/08 Python
python字符串与url编码的转换实例
2018/05/10 Python
python科学计算之narray对象用法
2019/11/25 Python
美国顶级奢侈茶:Mighty Leaf Tea(美泰茶)
2016/11/26 全球购物
新西兰床上用品和家居用品购物网站:Adairs
2018/04/27 全球购物
什么叫做SQL注入,如何防止
2016/10/04 面试题
教导主任竞聘演讲稿
2014/05/16 职场文书
拓展策划方案
2014/06/03 职场文书
北京奥运会口号
2014/06/21 职场文书
移交协议书
2014/08/19 职场文书
刑事上诉状范文
2015/05/22 职场文书
致短跑运动员加油稿
2015/07/21 职场文书
python 使用Tensorflow训练BP神经网络实现鸢尾花分类
2021/05/12 Python
Keras多线程机制与flask多线程冲突的解决方案
2021/05/28 Python
Innodb存储引擎中的后台线程详解
2022/04/03 MySQL