千分位数字格式化(用逗号隔开 代码已做了修改 支持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 相关文章推荐
TimergliderJS 一个基于jQuery的时间轴插件
Dec 07 Javascript
js判断浏览器类型的方法
Aug 07 Javascript
jquery操作下拉列表、文本框、复选框、单选框集合(收藏)
Jan 08 Javascript
jQuery队列操作方法实例
Jun 11 Javascript
JavaScript Date 知识浅析
Jan 29 Javascript
JS正则表达式判断有效数实例代码
Mar 13 Javascript
基于javascript的异步编程实例详解
Apr 10 Javascript
详解Vue2.0里过滤器容易踩到的坑
Jun 01 Javascript
基于JS实现移动端左滑删除功能
Jul 28 Javascript
详解vue 项目白屏解决方案
Oct 31 Javascript
详解Webpack如何引入CDN链接来优化编译后的体积
Jun 21 Javascript
vue项目出现页面空白的解决方案
Oct 31 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
关于JavaScript中var声明变量作用域的推断
2010/12/16 Javascript
Javascript中的this绑定介绍
2011/09/22 Javascript
jqgrid 编辑添加功能详细解析
2013/11/08 Javascript
Js操作树节点自动折叠展开的几种方法
2014/05/05 Javascript
JavaScript中消除闭包的一般方法介绍
2015/03/16 Javascript
jQuery判断指定id的对象是否存在的方法
2015/05/22 Javascript
QQ登录背景闪动效果附效果演示源码下载
2015/09/22 Javascript
Bootstrap每天必学之基础排版
2015/11/20 Javascript
浅谈javascript基础之客户端事件驱动
2016/06/10 Javascript
Canvas 绘制粒子动画背景
2017/02/15 Javascript
js实现上下左右弹框划出效果
2017/03/08 Javascript
nodejs中向HTTP响应传送进程的输出
2017/03/19 NodeJs
如何解决vue与传统jquery插件冲突
2017/03/20 Javascript
js实现动态改变radio状态的方法
2018/02/28 Javascript
基于Vue实现图片在指定区域内移动的思路详解
2018/11/11 Javascript
React精髓!一篇全概括小结(急速)
2019/05/23 Javascript
js实现跟随鼠标移动的小球
2019/08/26 Javascript
Python线性方程组求解运算示例
2018/01/17 Python
pycharm中使用anaconda部署python环境的方法步骤
2018/12/19 Python
python 缺失值处理的方法(Imputation)
2019/07/02 Python
在jupyter notebook中调用.ipynb文件方式
2020/04/14 Python
pyinstaller打包单文件时--uac-admin选项不起作用怎么办
2020/04/15 Python
python logging.info在终端没输出的解决
2020/05/12 Python
详解HTML5中的picture元素响应式处理图片
2018/01/03 HTML / CSS
StubHub哥伦比亚:购买和出售您的门票
2016/10/20 全球购物
乌克兰香水和化妆品网站:Notino.ua
2018/03/26 全球购物
荷兰在线体育用品商店:Avantisport.nl
2018/07/04 全球购物
音乐系毕业生自荐信
2013/10/27 职场文书
本科毕业生专业自荐书范文
2014/02/05 职场文书
三年级评语大全
2014/04/23 职场文书
工程售后服务承诺书
2014/05/21 职场文书
元旦标语大全
2014/10/09 职场文书
试用期旷工辞退通知书
2015/04/17 职场文书
2015年公务员转正工作总结
2015/04/24 职场文书
小学数学教师研修感悟
2015/11/18 职场文书
课改心得体会范文
2016/01/25 职场文书