千分位数字格式化(用逗号隔开 代码已做了修改 支持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 居中漂浮广告
Mar 21 Javascript
JQuery解析HTML、JSON和XML实例详解
Mar 29 Javascript
jQuery实现按钮只点击一次后就取消点击事件绑定的方法
Jun 26 Javascript
JavaScript位移运算符(无符号) &gt;&gt;&gt; 三个大于号 的使用方法详解
Mar 31 Javascript
前端性能优化及技巧
May 06 Javascript
jQuery向父辈遍历的简单方法
Sep 18 Javascript
详解jQuery中的事件
Dec 14 Javascript
微信小程序 定位到当前城市实现实例代码
Feb 23 Javascript
jQuery进阶实践之利用最优雅的方式如何写ajax请求
Dec 20 jQuery
使用Javascript简单计算器
Nov 17 Javascript
详解Nuxt.js 实战集锦
Nov 19 Javascript
jQuery 隐藏/显示效果函数用法实例分析
May 20 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
咖啡机如何保养和日常清洁?
2021/03/03 冲泡冲煮
给php新手谈谈我的学习心得
2007/02/25 PHP
PHP获取日期对应星期、一周日期、星期开始与结束日期的方法
2018/06/22 PHP
PHP的PDO事务与自动提交
2019/01/24 PHP
微信公众平台开发教程⑤ 微信扫码支付模式介绍
2019/04/10 PHP
JavaScript中的prototype和constructor简明总结
2014/04/05 Javascript
一个js过滤空格的小函数
2014/10/10 Javascript
js实现鼠标触发图片抖动效果的方法
2015/02/27 Javascript
超详细的javascript数组方法汇总
2015/11/21 Javascript
基于jQuery 实现bootstrapValidator下的全局验证
2015/12/07 Javascript
SublimeText自带格式化代码功能之reindent
2015/12/27 Javascript
JavaScript操作class和style样式代码详解
2016/02/13 Javascript
微信小程序 Toast自定义实例详解
2017/01/20 Javascript
js实现不提示直接关闭网页窗口
2017/03/30 Javascript
js 数字、字符串、布尔值的转换方法(必看)
2017/04/07 Javascript
vue使用mint-ui实现下拉刷新和无限滚动的示例代码
2017/11/06 Javascript
JavaScript函数、闭包、原型、面向对象学习笔记
2018/09/06 Javascript
JS使用数组实现的队列功能示例
2019/03/04 Javascript
vue-cli随机生成port源码的方法
2019/09/02 Javascript
js回调函数仿360开机
2019/12/26 Javascript
详解DeBug Python神级工具PySnooper
2019/07/03 Python
使用Python opencv实现视频与图片的相互转换
2019/07/08 Python
Pycharm 文件更改目录后,执行路径未更新的解决方法
2019/07/19 Python
pycharm 设置项目的根目录教程
2020/02/12 Python
法学专业本科生自荐信范文
2013/12/17 职场文书
办公室文员自荐书
2014/02/03 职场文书
开学典礼感言
2014/02/16 职场文书
农民工工资承诺书范文
2014/03/31 职场文书
2014国庆黄金周超市促销活动方案
2014/09/21 职场文书
2014年内部审计工作总结
2014/12/09 职场文书
护士个人年终总结
2015/02/13 职场文书
《和时间赛跑》读后感3篇
2019/12/16 职场文书
利用Java设置Word文本框中的文字旋转方向的实现方法
2021/06/28 Java/Android
springboot新建项目pom.xml文件第一行报错的解决
2022/01/18 Java/Android
十大必看国产动漫排名,魁拔上线,第二曾在日本播出
2022/03/18 国漫
Win11如何启用启动修复 ? Win11执行启动修复的三种方法
2022/04/08 数码科技