ホームページ  >  記事  >  ウェブフロントエンド  >  千の位をフォーマットするための JS コード (カンマで区切られています。このコードは、0 ~ 9 桁を区切るカンマをサポートするように変更されています)_JavaScript スキル

千の位をフォーマットするための JS コード (カンマで区切られています。このコードは、0 ~ 9 桁を区切るカンマをサポートするように変更されています)_JavaScript スキル

WBOY
WBOYオリジナル
2016-05-16 17:10:31856ブラウズ

最近プロジェクトに取り組んでいると、フロントエンドで金額を 1000 分の 1 でフォーマットする必要があります (つまり、3 桁ごとにカンマで区切られます)。以前のバージョンは私の不注意により変更されました。みんなごめんなさい!現在は修正されていますが、まだ不備がある場合はアドバイスをお願いします。

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 && (私 1) != prefixArr.length ? "," : "");
}
t = t.split("").reverse().join("");
if(サフィックス != ' ') {
return t "." suffix;
}else {
return t;
}

}else {
return '传入相当位不确';
}

}else if(プレフィックス != '' && サフィックス == ''){

プレフィックスを返します;

}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 == ars[i]) {
return i;
}
}
return -1;
}
function isNumber(number) {
return Object.prototype .toString.apply(number) === '[オブジェクト番号]';
}

function isString(number) {
return Object.prototype.toString.apply(number) === ['object String'];
}

しかし、不完全なようです。console.log(numFormat("1111.00")); を呼び出して、1,111.00 の代わりに 1,111 をコンソールに出力します。つまり、小数点が 0 の場合、ブラウザは次のようになります。 0 は自動的に消去され、その他は正常です。テストしましたが、基本的に要件を満たしています。不完全な点がある場合は、アドバイスをお願いします。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。