โปรเจ็กต์ล่าสุดต้องการให้เราจัดรูปแบบจำนวนเงินเป็นพันที่ส่วนหน้า (นั่นคือ คั่นทุกๆ สามหลักด้วยเครื่องหมายจุลภาค) โค้ดได้รับการแก้ไขแล้ว เวอร์ชันก่อนหน้านี้เป็นการกำกับดูแลในส่วนของฉัน ฉันรู้สึกเสียใจกับทุกคนจริงๆ มีการปรับเปลี่ยนในขณะนี้ หากยังมีข้อบกพร่อง โปรดให้คำแนะนำแก่ฉัน!
1. รองรับการคั่นด้วยเครื่องหมายจุลภาค 0-9 หลัก โดยคั่นด้วยเครื่องหมายจุลภาค
รหัส JS เป็นดังนี้:
คัดลอกรหัสรหัสดังต่อไปนี้:
-
*การจัดรูปแบบ JS
* @param number ตัวเลขที่จะจัดรูปแบบ
* @param d [0-9] คั่นด้วยเครื่องหมายจุลภาค
-
ฟังก์ชั่น numFormat (หมายเลข d) {
var numArrs = ['0','1','2','3','4','5','6','7','8','9'],
REG_NUMBER = /^/d+(./d+)?$/;
d = d ||.3; // ถ้าไม่ผ่านจะเป็น 3 หลักในพัน
ถ้า (isNumber (หมายเลข) || isString (หมายเลข) || REG_NUMBER.test (หมายเลข)) {
//แปลงเป็นสตริงก่อน
var toString = จำนวน + '',
isPoint = toString.indexOf('.'),
คำนำหน้า // คำนำหน้า
คำต่อท้าย // คำต่อท้าย
เสื้อ = '';
ถ้า(isPoint > 0) {
คำนำหน้า = toString.substring (0, isPoint);
ส่วนต่อท้าย = toString.substring (isPoint + 1);
} อื่นถ้า (isPoint == 0) {
คำนำหน้า = '';
คำต่อท้าย = toString.substring (1);
}อื่น {
คำนำหน้า = toString;
คำต่อท้าย = '';
-
ถ้า (คำนำหน้า != '') {
prefixArr = คำนำหน้า.split('').reverse();
var isArrayIndex = isArray(d,numArrs);
ถ้า(isArrayIndex > -1) {
สำหรับ (var i = 0, ilen = prefixArr.length; i < ilen; i+=1) {
t += prefixArr[i] + ((i + 1) % isArrayIndex == 0 && (i + 1) != prefixArr.length ? "," : "");
-
t = t.split("").ย้อนกลับ().join("");
ถ้า (ต่อท้าย != '') {
กลับ t + "." + ต่อท้าย;
}อื่น {
กลับที;
-
}อื่น {
กลับ 'จำนวนที่ส่งไม่ถูกต้อง';
-
}else if(คำนำหน้า != '' && ต่อท้าย == ''){
คำนำหน้าส่งคืน;
}else if(คำนำหน้า == '' && ต่อท้าย != ''){
คำนำหน้า = 0;
กลับคำนำหน้า + ต่อท้าย;
}อื่น {
กลับ "มีข้อผิดพลาด";
-
}อื่น {
return 'หมายเลขที่ส่งเข้ามาเพื่อจัดรูปแบบไม่สอดคล้อง';
-
-
ฟังก์ชั่น isArray (รายการ, arrs) {
สำหรับ (var i = 0, ilen = arrs.length; i < ilen; i++) {
ถ้า (รายการ == arrs [i]) {
ส่งคืนฉัน;
-
-
กลับ -1;
-
ฟังก์ชั่น isNumber (หมายเลข) {
กลับ Object.prototype.toString.apply (หมายเลข) === '[หมายเลขวัตถุ]';
-
ฟังก์ชั่น isString (หมายเลข) {
return Object.prototype.toString.apply (หมายเลข) === ['วัตถุสตริง'];
-
แต่ดูเหมือนว่าจะมีความไม่สมบูรณ์ ฉันเรียก console.log(numFormat("1111.00")); และมันจะส่งออกโดยตรง 1,111 แทนที่จะเป็น 1,111.00 บนคอนโซล กล่าวอีกนัยหนึ่งหากจุดทศนิยมเป็น 0 เบราว์เซอร์จะลบโดยอัตโนมัติ มัน. วาง 0 สุดท้ายแล้วทุกอย่างก็เป็นเรื่องปกติ! ฉันได้ทดสอบแล้วและเป็นไปตามข้อกำหนดโดยทั่วไป หากมีข้อบกพร่องใดๆ โปรดให้คำแนะนำแก่ฉัน!