千分位数字格式化(用逗号隔开 代码已做了修改 支持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添加输出窗口的代码
Feb 07 Javascript
jQuery效果 slideToggle() 方法(在隐藏和显示之间切换)
Jun 28 Javascript
基于JQuery实现鼠标点击文本框显示隐藏提示文本
Feb 23 Javascript
js借助ActiveXObject实现创建文件
Sep 29 Javascript
HTML5 canvas 9绘制图片实例详解
Sep 06 Javascript
浅谈vue的iview列表table render函数设置DOM属性值的方法
Sep 30 Javascript
p5.js实现斐波那契螺旋的示例代码
Mar 22 Javascript
浅谈Webpack打包优化技巧
Jun 12 Javascript
小程序实现单选多选功能
Nov 04 Javascript
Vue 后台管理类项目兼容IE9+的方法示例
Feb 20 Javascript
vue使用transition组件动画效果的实例代码
Jan 28 Vue.js
JavaScript canvas实现跟随鼠标移动小球
Feb 09 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
让你同时上传 1000 个文件 (一)
2006/10/09 PHP
PHP 向右侧拉菜单实现代码,测试使用中
2009/11/03 PHP
jQuery 源码分析笔记
2011/05/25 PHP
完美解决:Apache启动问题―(OS 10022)提供了一个无效的参数
2013/06/08 PHP
thinkphp5修改view到根目录实例方法
2019/07/02 PHP
Javascript 垃圾收集机制介绍理解
2013/05/14 Javascript
JS分页控件 可用于无刷新分页
2013/07/23 Javascript
js读取注册表的键值示例
2013/09/25 Javascript
ExtJS的拖拽效果示例
2013/12/09 Javascript
javascript如何操作HTML下拉列表标签
2015/08/20 Javascript
JS控制按钮10秒钟后可用的方法
2015/12/22 Javascript
浅析Bootstrap缩略图组件与警示框组件
2016/04/29 Javascript
vue 开发一个按钮组件的示例代码
2018/03/27 Javascript
了解JavaScript函数中的默认参数
2019/05/30 Javascript
微信小程序Echarts图表组件使用方法详解
2019/06/25 Javascript
Vue中computed及watch区别实例解析
2020/08/01 Javascript
Vue路由 重定向和别名的区别说明
2020/09/09 Javascript
js+audio实现音乐播放器
2020/09/13 Javascript
[03:56]DOTA2完美大师赛趣味视频之小鸽子和Mineski打台球
2017/11/24 DOTA
20招让你的Python飞起来!
2016/09/27 Python
Python操作SQLite数据库的方法详解【导入,创建,游标,增删改查等】
2017/07/11 Python
django 常用orm操作详解
2017/09/13 Python
Python实现的多叉树寻找最短路径算法示例
2018/07/30 Python
解决Python 使用h5py加载文件,看不到keys()的问题
2019/02/08 Python
详解python使用turtle库来画一朵花
2019/03/21 Python
python-django中的APPEND_SLASH实现方法
2019/06/21 Python
Python OrderedDict的使用案例解析
2019/10/25 Python
Python selenium使用autoIT上传附件过程详解
2020/05/26 Python
基于python实现matlab filter函数过程详解
2020/06/08 Python
浅析Python 责任链设计模式
2020/09/11 Python
CSS实现定位元素居中的方法
2015/06/23 HTML / CSS
中标通知书范本
2015/04/17 职场文书
贴吧吧主申请感言
2015/08/03 职场文书
创业计划书之宠物店
2019/09/19 职场文书
电脑关机速度很慢怎么办 提升电脑关机速度设置教程
2022/04/08 数码科技
Java中的继承、多态以及封装
2022/04/11 Java/Android