Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Javascript

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


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

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

ตรวจหา NaN

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

ตัวอย่าง

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
]