千分位数字格式化(用逗号隔开 代码已做了修改 支持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 19 Javascript
javascript object array方法使用详解
Dec 03 Javascript
JavaScript实现的伸展收缩型菜单代码
Oct 14 Javascript
jquery+css3实现会动的小圆圈效果
Jan 27 Javascript
微信小程序 wx.uploadFile无法上传解决办法
Dec 14 Javascript
js设置文字颜色的方法示例
Dec 30 Javascript
js 调用百度分享功能
Feb 27 Javascript
AngularJS 验证码60秒倒计时功能的实现
Jun 05 Javascript
vue-cli项目根据线上环境分别打出测试包和生产包
May 23 Javascript
vue解决花括号数据绑定不成功的问题
Oct 30 Javascript
2019最新21个MySQL高频面试题介绍
Feb 06 Javascript
uni-app微信小程序登录授权的实现
May 22 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桌面中心(三) 修改数据库
2007/03/11 PHP
php 文件缓存函数
2011/10/08 PHP
php中数字0和空值的区别分析
2014/06/05 PHP
php使用数组填充下拉列表框的方法
2015/03/31 PHP
php实现的日历程序
2015/06/18 PHP
PHP中PDO的事务处理分析
2016/04/07 PHP
PHP5.5安装PHPRedis扩展及连接测试方法
2017/01/22 PHP
thinkPHP5.0框架开发规范简介
2017/03/25 PHP
PHP双向链表定义与用法示例
2018/01/31 PHP
javascript js cookie的存储,获取和删除
2007/12/29 Javascript
JavaScript 直接操作本地文件的实现代码
2009/12/01 Javascript
javascript 面向对象 function类
2010/05/13 Javascript
再谈querySelector和querySelectorAll的区别与联系
2012/04/20 Javascript
深入理解JSON数据源格式
2014/01/10 Javascript
jQuery的3种请求方式$.post,$.get,$.getJSON
2014/03/28 Javascript
jquery和css3实现的炫酷时尚的菜单导航
2014/09/01 Javascript
jQuery插件实现表格隔行变色及鼠标滑过高亮显示效果代码
2016/02/25 Javascript
JavaScript实现前端分页控件
2017/04/19 Javascript
vue下跨域设置的相关介绍
2017/08/26 Javascript
Vue2.0 slot分发内容与props验证的方法
2017/12/12 Javascript
JQuery选中select组件被选中的值方法
2018/03/08 jQuery
详解Vue This$Store总结
2018/12/17 Javascript
Vue在 Nuxt.js 中重定向 404 页面的方法
2019/04/23 Javascript
微信小程序实现转盘抽奖
2020/09/21 Javascript
[20:30]职业巡回赛回顾
2018/08/09 DOTA
Python多线程经典问题之乘客做公交车算法实例
2017/03/22 Python
Python 中的lambda函数介绍
2018/10/10 Python
使用python爬取微博数据打造一颗“心”
2019/06/28 Python
使用Python给头像戴上圣诞帽的图像操作过程解析
2019/09/20 Python
python文件及目录操作代码汇总
2020/07/08 Python
canvas之万花筒效果的简单实现(推荐)
2016/08/16 HTML / CSS
基于HTML5+CSS3实现简单的时钟效果
2017/09/11 HTML / CSS
西班牙网上书店:Casa del Libro
2016/11/01 全球购物
新党章的学习心得体会
2014/11/07 职场文书
沈阳故宫导游词
2015/01/31 职场文书
帝企鹅日记观后感
2015/06/10 职场文书