千分位数字格式化(用逗号隔开 代码已做了修改 支持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 相关文章推荐
node.js中的fs.stat方法使用说明
Dec 16 Javascript
Bootstrap入门书籍之(三)栅格系统
Feb 17 Javascript
JS数组去掉重复数据只保留一条的实现代码
Aug 11 Javascript
前端js实现文件的断点续传 后端PHP文件接收
Oct 14 Javascript
Angular 2应用的8个主要构造块有哪些
Oct 17 Javascript
js 颜色选择插件
Jan 23 Javascript
BootStrap表单控件之文本域textarea
May 23 Javascript
ES6关于Promise的用法详解
May 07 Javascript
jQuery实现的中英文切换功能示例
Jan 11 jQuery
vue实现按需加载组件及异步组件功能
May 27 Javascript
浅谈layui分页控件field参数接收对象的问题
Sep 20 Javascript
ant-design-vue中的select选择器,对输入值的进行筛选操作
Oct 24 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反射机制用法实例
2014/08/28 PHP
Thinkphp结合AJAX长轮询实现PC与APP推送详解
2017/07/31 PHP
laravel框架中间件 except 和 only 的用法示例
2019/07/12 PHP
php解决crontab定时任务不能写入文件问题的方法分析
2019/09/16 PHP
ThinkPHP 5 AJAX跨域请求头设置实现过程解析
2020/10/28 PHP
extjs 的权限问题 要求控制的对象是 菜单,按钮,URL
2010/03/09 Javascript
iframe自适应宽度、高度 ie6 7 8,firefox 3.86下测试通过
2010/07/29 Javascript
jquery判断复选框是否选中进行答题提示特效
2015/12/10 Javascript
关于获取DIV内部内容报错的原因分析及解决办法
2016/01/29 Javascript
js调用父框架函数与弹窗调用父页面函数的简单方法
2016/11/01 Javascript
jquery Ajax 全局调用封装实例详解
2017/01/16 Javascript
js/jq仿window文件夹移动/剪切/复制等操作代码
2017/03/08 Javascript
JavaScript输出所选择起始与结束日期的方法
2017/07/12 Javascript
AngularJS中的路由使用及实现代码
2017/10/09 Javascript
js 索引下标之li集合绑定点击事件
2018/01/12 Javascript
[00:33]2018DOTA2亚洲邀请赛TNC出场
2018/04/04 DOTA
opencv python 图像去噪的实现方法
2018/08/31 Python
Python应用领域和就业形势分析总结
2019/05/14 Python
PyQt5 QTable插入图片并动态更新的实例
2019/06/18 Python
pycharm部署、配置anaconda环境的教程
2020/03/24 Python
Pycharm2020.1安装无法启动问题即设置中文插件的方法
2020/08/07 Python
Python项目打包成二进制的方法
2020/12/30 Python
HTML5中的新元素介绍
2008/10/17 HTML / CSS
以工厂直接定价的传奇性能:Ben Hogan Golf
2019/01/04 全球购物
新加坡一家在线男士皮具品牌:Faire Leather Co.
2019/12/01 全球购物
2014的自我评价
2014/01/13 职场文书
优秀党支部事迹材料
2014/01/14 职场文书
事业单位公务员的职业生涯规划
2014/01/15 职场文书
护士自我鉴定怎么写
2014/02/07 职场文书
知识竞赛主持词
2014/03/26 职场文书
法定代表人授权委托书
2014/04/04 职场文书
计生工作先进事迹
2014/08/15 职场文书
119消防日活动总结
2014/08/29 职场文书
地理信息科学专业推荐信
2014/09/08 职场文书
2015年个人自我剖析材料
2014/12/29 职场文书
幼儿教师小班个人总结
2015/02/05 职场文书