千分位数字格式化(用逗号隔开 代码已做了修改 支持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 相关文章推荐
克隆javascript对象的三个方法小结
Jan 12 Javascript
JavaScript高级程序设计阅读笔记(五) ECMAScript中的运算符(一)
Feb 27 Javascript
JavaScript声明变量时为什么要加var关键字
Sep 29 Javascript
dreamweaver 8实现Jquery自动提示
Dec 04 Javascript
推荐6款基于jQuery实现图片效果插件
Dec 07 Javascript
javascript实现的多个层切换效果通用函数实例
Jul 06 Javascript
AngularJs Dependency Injection(DI,依赖注入)
Sep 02 Javascript
JS动态计算移动端rem的解决方案
Oct 14 Javascript
详解在 Angular 项目中添加 clean-blog 模板
Jul 04 Javascript
使用store来优化React组件的方法
Oct 23 Javascript
vue 中动态绑定class 和 style的方法代码详解
Jun 01 Javascript
vue父子模板传值问题解决方法案例分析
Feb 26 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
php使用curl检测网页是否被百度收录的示例分享
2014/01/31 PHP
PHP调试的强悍利器之PHPDBG
2016/02/22 PHP
PHP实现的多文件上传类及用法示例
2016/05/06 PHP
Laravel如何使用Redis共享Session
2018/02/23 PHP
ThinkPHP5.0多个文件上传后找不到临时文件的修改方法
2018/07/30 PHP
JS 页面内容搜索,类似于 Ctrl+F功能的实现代码
2007/08/13 Javascript
Javascript 页面模板化很多人没有使用过的方法
2012/06/05 Javascript
asp.net中System.Timers.Timer的使用方法
2013/03/20 Javascript
animate动画示例(泪奔的小孩)及stop和delay的使用
2013/05/06 Javascript
编写自己的jQuery提示框(Tip)插件
2015/02/05 Javascript
使用Raygun来自动追踪AngularJS中的异常
2015/06/23 Javascript
javascript实现随机显示星星特效
2016/01/28 Javascript
angular route中使用resolve在uglify压缩后问题解决
2016/09/21 Javascript
AngularJS ngModel实现指令与输入直接的数据通信
2016/09/21 Javascript
利用jQuery.Validate异步验证用户名是否存在(推荐)
2016/12/09 Javascript
vue-resource 拦截器(interceptor)的使用详解
2017/07/04 Javascript
JavaScript实现离开页面前提示功能【附jQuery实现方法】
2017/09/26 jQuery
基于vue实现网站前台的权限管理(前后端分离实践)
2018/01/13 Javascript
微信小程序如何像vue一样在动态绑定类名
2018/04/17 Javascript
vue+egg+jwt实现登录验证的示例代码
2019/05/18 Javascript
小程序中英文混合排序问题解决
2019/08/02 Javascript
python虚拟环境 virtualenv的简单使用
2020/01/21 Javascript
vue路由跳转传递参数的方式总结
2020/05/10 Javascript
浅谈vue.watch的触发条件是什么
2020/11/07 Javascript
[01:57]2016完美“圣”典风云人物:国士无双专访
2016/12/04 DOTA
python 获取一个值在某个区间的指定倍数的值方法
2018/11/12 Python
python中强大的format函数实例详解
2018/12/05 Python
Python 异步协程函数原理及实例详解
2019/11/13 Python
Python 复平面绘图实例
2019/11/21 Python
使用python实现回文数的四种方法小结
2019/11/24 Python
kafka-python 获取topic lag值方式
2019/12/23 Python
python如何求数组连续最大和的示例代码
2020/02/04 Python
如果有两个类A,B,怎么样才能使A在发生一个事件的时候通知B
2016/03/12 面试题
党员个人剖析材料(四风问题)
2014/10/07 职场文书
劳动争议仲裁代理词
2015/05/25 职场文书
MybatisPlus EntityWrapper如何自定义SQL
2022/03/22 Java/Android