Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> JavaScript

จัดเรียงอาร์เรย์ JavaScript ให้ค่า NaN อยู่ท้ายสุดเสมอ


เรามีอาร์เรย์ที่มีข้อมูลประเภท String และ number ผสมกัน เราต้องเขียนฟังก์ชันจัดเรียงที่จัดอาร์เรย์ให้ค่า NaN อยู่ท้ายสุดเสมอ อาร์เรย์ควรมีตัวเลขปกติทั้งหมดก่อน ตามด้วยสตริง และตามด้วยตัวเลข NaN

เรารู้ว่าชนิดข้อมูลของ NaN คือ "number" ดังนั้นเราไม่สามารถตรวจสอบ NaN ได้แบบ !number && !string นอกจากนี้ ถ้าเราตรวจสอบความจริงและความเท็จขององค์ประกอบอย่างเดียว สตริงว่างก็จะผ่านเงื่อนไขเดียวกับที่ NaN หรือ undefined ผ่าน

ตรวจสอบ NaN

เราตรวจสอบ NaN ยังไง? ตัวเลข NaN มีคุณสมบัติพิเศษ คือ NaN ไม่เท่ากับ NaN เอง นั่นคือ สำหรับค่าอื่นๆ ใน JS ไหนก็ตาม value === value จะให้ true แต่ NaN === NaN จะให้ false เสมอ เราจะใช้ข้อเท็จจริงนี้เพื่อจัดเรียงอาร์เรย์ของเรา

ตัวอย่าง

const arr = [344, 'fd', NaN, '', 5, 'f',76, NaN, 76, NaN, 87, 89, 'fdf', 23, 'fgg', NaN, 765]; const sorter = (a, b) => {    if(a !== a){       return 1;    }else if(b !== b){       return -1;    }    return typeof a === 'number' ? -1 : 1; }; arr.sort(sorter); console.log(arr);

ผลลัพธ์

ผลลัพธ์ในคอนโซลจะเป็นดังนี้

[    765, 23, 89, 87,    76, 76, 5, 344,    'fd', '', 'f', 'fdf',    'fgg', NaN, NaN, NaN,    NaN ]