最近プロジェクトに取り組んでいると、フロントエンドで金額を 1000 分の 1 でフォーマットする必要があります (つまり、3 桁ごとにカンマで区切られます)。以前のバージョンは私の不注意により変更されました。みんなごめんなさい!現在は修正されていますが、まだ不備がある場合はアドバイスをお願いします。
1. カンマで区切られた 0 ~ 9 文字をサポートします
JS コードは次のとおりです:
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 は自動的に消去され、その他は正常です。テストしましたが、基本的に要件を満たしています。不完全な点がある場合は、アドバイスをお願いします。