千分位数字格式化(用逗号隔开 代码已做了修改 支持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变强势
Jun 22 Javascript
基于jquery的关于动态创建DOM元素的问题
Dec 24 Javascript
js简单判断移动端系统的方法
Feb 25 Javascript
简单的jQuery banner图片轮播实例代码
Mar 04 Javascript
javascript表单控件实例讲解
Sep 13 Javascript
JS动态添加选项案例分析
Oct 17 Javascript
jQuery插件zTree实现的多选树效果示例
Mar 08 Javascript
vue实现表格数据的增删改查
Jul 10 Javascript
AngularJS实现controller控制器间共享数据的方法示例
Oct 30 Javascript
高性能的javascript之加载顺序与执行原理篇
Jan 14 Javascript
微信小程序API—获取定位的详解
Apr 30 Javascript
记一次vue跨域的解决
Oct 21 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开发环境配置记录
2011/01/14 PHP
比较完整的微信开发php代码
2016/08/02 PHP
php实现遍历文件夹的方法汇总
2017/03/02 PHP
ie focus bug 解决方法
2009/09/03 Javascript
JavaScript 组件之旅(一)分析和设计
2009/10/28 Javascript
JQuery从头学起第二讲
2010/07/04 Javascript
一个轻量级的javascript库 pj介绍
2010/12/19 Javascript
js 自动播放的实例代码
2013/11/19 Javascript
Javascript 按位与赋值运算符 (&amp;=)使用介绍
2014/02/04 Javascript
node.js中的http.response.addTrailers方法使用说明
2014/12/14 Javascript
JavaScript中数组继承的简单示例
2015/07/29 Javascript
详解AngularJS 模态对话框
2016/04/07 Javascript
js检查是否关闭浏览器的方法
2016/08/02 Javascript
jquery ajax后台返回list,前台用jquery遍历list的实现
2016/10/30 Javascript
详解Js模板引擎(TrimPath)
2016/11/22 Javascript
浅谈angularjs依赖服务注入写法的注意点
2017/04/24 Javascript
基于react后端渲染模板引擎noox发布使用
2018/01/11 Javascript
微信小程序的授权实现过程解析
2019/08/02 Javascript
javascript将16进制的字符串转换为10进制整数hex
2020/03/05 Javascript
微信小程序自定义弹出层效果
2020/05/26 Javascript
原生js实现表格翻页和跳转
2020/09/29 Javascript
python使用电子邮件模块smtplib的方法
2016/08/28 Python
Tensorflow实现AlexNet卷积神经网络及运算时间评测
2018/05/24 Python
Python中的全局变量如何理解
2020/06/04 Python
VSCode中autopep8无法运行问题解决方案(提示Error: Command failed,usage)
2021/03/02 Python
公司财务工作总结的自我评价
2013/11/23 职场文书
毕业生的自我鉴定该怎么写
2013/12/02 职场文书
纪检干部现实表现材料
2014/08/21 职场文书
2014年药品销售工作总结
2014/12/16 职场文书
乔迁之喜答谢词
2015/01/05 职场文书
教师个人发展总结
2015/02/11 职场文书
外贸采购员岗位职责
2015/04/03 职场文书
学习委员竞选稿
2015/11/20 职场文书
护理培训心得体会
2016/01/22 职场文书
资深HR教你写好简历中的自我评价
2019/05/07 职场文书
前端实现滑动按钮AJAX与后端交互的示例代码
2022/02/24 Javascript