Ein aktuelles Projekt erfordert, dass wir den Betrag im Frontend in Tausendstel formatieren (das heißt, alle drei Ziffern durch Kommas trennen). Die vorherige Version war ein Versehen meinerseits. Es wurden nun Änderungen vorgenommen, falls noch Unvollkommenheiten vorhanden sind, geben Sie mir bitte Ihren Rat!
1. Unterstützt durch Kommas getrennte Ziffern von 0 bis 9, die durch Kommas getrennt sind.
Der JS-Code lautet wie folgt:
Kopieren Sie den Codecode wie folgt:
/**
*JS-Formatierung
* @param Zahl Die zu formatierende Zahl
* @param d [0-9] durch Kommas getrennt
*/
Funktion numFormat(number,d) {
var numArrs = ['0','1','2','3','4','5','6','7','8','9'],
REG_NUMBER = /^/d+(./d+)?$/;
d = d ||. 3; // Wenn nicht übergeben, sind es 3 Tausendstelstellen.
if(isNumber(number) || isString(number) || REG_NUMBER.test(number)) {
//Zuerst in einen String konvertieren
var toString = Zahl + '',
isPoint = toString.indexOf('.'),
Präfix, // Präfix
Suffix, // Suffix
t = '';
if(isPoint > 0) {
prefix = toString.substring(0,isPoint);
suffix = toString.substring(isPoint + 1);
}else if(isPoint == 0) {
Präfix = '';
suffix = toString.substring(1);
}anders {
Präfix = toString;
Suffix = '';
}
if(Präfix != '') {
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;
}anders {
Rückkehr t;
}
}anders {
return „Wie viele eingegebene Ziffern sind falsch“;
}
}else if(Präfix != '' && Suffix == ''){
Rückgabepräfix;
}else if(Präfix == '' && Suffix != ''){
Präfix = 0;
Präfix + Suffix zurückgeben;
}anders {
return „Es liegt ein Fehler vor“;
}
}anders {
return 'Die zur Formatierung übergebene Zahl stimmt nicht überein';
}
}
Funktion isArray(item,arrs) {
for(var i = 0, ilen = arrs.length; i < ilen; i++) {
if(item == arrs[i]) {
gib i zurück;
}
}
return -1;
}
Funktion isNumber(number) {
return Object.prototype.toString.apply(number) === '[object Number]';
}
Funktion isString(number) {
return Object.prototype.toString.apply(number) === ['object String'];
}
Aber es scheint eine Unvollkommenheit zu geben. Ich rufe console.log(numFormat("1111.00")) auf und es gibt direkt 1.111 statt 1.111,00 aus. Mit anderen Worten, wenn der Dezimalpunkt 0 ist, wird der Browser automatisch löschen Lass die letzte 0 fallen und alles andere ist normal! Ich habe es getestet und es entspricht im Wesentlichen den Anforderungen. Sollten Mängel auftreten, geben Sie mir bitte Ihren Rat!