يتطلب أحد المشاريع الحديثة تنسيق المبلغ بالألف على الواجهة الأمامية (أي فصل كل ثلاثة أرقام بفواصل). لقد تم تعديل الكود في الإصدار السابق، وأنا أشعر بالأسف حقًا من أجل الجميع. تم إجراء التعديلات الآن إذا كان لا يزال هناك عيوب، من فضلك أعطني نصيحتك!
1. يدعم الأرقام المفصولة بفواصل من 0 إلى 9 أرقام مفصولة بفواصل.
رمز JS هو كما يلي:
انسخ رمز الكود كما يلي:
/**
*تنسيق JS
* @param number الرقم المراد تنسيقه
* @param d [0-9] مفصولة بفواصل
*/
وظيفة numFormat(number,d) {
فار numArrs = ['0','1','2','3','4','5','6','7','8','9'],
REG_NUMBER = /^/d+(./d+)?$/;
d = d ||.3; // إذا لم يتم تمريره، فهو 3 أرقام من الألف.
إذا (isNumber(number) || isString(number) || REG_NUMBER.test(number)) {
// تحويل إلى سلسلة أولا
فار toString = رقم + ''،
isPoint = toString.indexOf('.'),
البادئة، // البادئة
لاحقة، // لاحقة
ر = '';
إذا (isPoint > 0) {
prefix = toString.substring(0,isPoint);
suffix = toString.substring(isPoint + 1);
} آخر إذا (isPoint == 0) {
بادئة = '';
لاحقة = toString.substring(1);
}آخر {
بادئة = toString;
لاحقة = '';
}
إذا (البادئة! = '') {
prefixArr = prefix.split('').reverse();
var isArrayIndex = isArray(d,numArrs);
إذا (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("");
إذا (لاحقة! = '') {
إرجاع t + "." + لاحقة؛
}آخر {
العودة ر؛
}
}آخر {
إرجاع "كم عدد الأرقام التي تم إدخالها غير صحيحة"؛
}
}else if(prefix != '' && suffix == ''){
بادئة العودة؛
}else if(prefix == '' && suffix != ''){
البادئة = 0؛
بادئة العودة + لاحقة؛
}آخر {
إرجاع "هناك خطأ"؛
}
}آخر {
إرجاع "الرقم الذي تم إدخاله ليتم تنسيقه غير متوافق"؛
}
}
الدالة هيArray(item,arrs) {
for(var i = 0, ilen = arrs.length; i < ilen; i++) {
إذا (العنصر == arrs[i]) {
العودة أنا؛
}
}
العودة -1؛
}
الدالة هيرقم(رقم) {
return Object.prototype.toString.apply(number) === '[رقم الكائن]'؛
}
الدالة هيسلسلة (رقم) {
return Object.prototype.toString.apply(number) === ['object String'];
}
ولكن يبدو أن هناك عيبًا. اتصل بـ console.log(numFormat("1111.00")); ويخرج مباشرة 1,111 بدلاً من 1,111.00 على وحدة التحكم. بمعنى آخر، إذا كانت العلامة العشرية هي 0، فسيقوم المتصفح بمسحها تلقائيًا إسقاط آخر 0 وكل شيء آخر طبيعي! لقد قمت باختباره وهو يلبي المتطلبات بشكل أساسي. إذا كان هناك أي عيوب، من فضلك أعطني نصيحتك!