JS数字格式化实用小工具

在页面显示的时候,会有这样一种需求,300,200,88.22¥,其实这个工作对于一个工作量不大的页面来说,完全可以在前段处理,减轻服务端的压力,所以就写了这么个小东西,很实用的,还支持负数的哦,和符号前置或后置


var NumberFormat = function( places, seperator, unit, prepose ){
this.unit = unit ? unit : '';
this.bits = places ? places : 3;
this.prepose = prepose ? true : false;
this.seper = seperator ? seperator : ', ';
};

NumberFormat.prototype.format = function( source ){
if( source && $.isNumeric( source ) ){
var res,
ss = source.toString(),
sign = ss.charAt( 0 ),
len = this.bits,
_index = ss.indexOf( '.' ),
l = ss.length;

if( _index >= 0 )
l = _index;

if( !$.isNumeric( sign ) ){
l = l - 1;
ss = ss.substring( 1 );
}else{
sign = '';
}

if( len >= l )
return source;

var nsize = Math.ceil( l/len ),
na = new Array( nsize ),
index = 0;

for( var i = l; i > 0; i = i-len ){
if( i-len <= 0 ){
na[ index++ ] = ss.substring( i, 0 );
}else{
na[ index++ ] = ss.substring( i, i-len );
}
}

res = na.reverse().join( this.seper );
if( _index >= 0 )
res += ss.substring( _index + 1 );

if( this.prepose )
res = this.unit + res;
else
res = res + this.unit;

return sign + res;
}
};

/**
* places, seperator, unit, prepose 4个参数的意思:
*
* places: 几个分为一组,默认3个为一组
* seperator: 分隔符,默认为逗号分隔
* unit: 单位,默认为空
* prepose: 是否把单位前置,默认为不前置
*
*/

/**
* format()方法接受一个参数,需要格式化的数字或者数字字符串,会返回格式化后的结果
*/



下面是测试代码:

var nf = new NumberFormat();
var res = nf.format(32342342342342);
console.log(res);//32, 342, 342, 342, 342
res = nf.format(-32342342342342);
console.log(res);//-32, 342, 342, 342, 342
nf = new NumberFormat(4, '-', '$');
res = nf.format(-32342342342342);
console.log(res);//-32-3423-4234-2342$
res = nf.format(32342342342342);
console.log(res);//32-3423-4234-2342$
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值