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

วิธีจัดเรียงรายการออบเจ็กต์ JavaScript ตามคุณสมบัติเมื่อคุณสมบัติไม่สม่ำเสมอ

เรามีอาร์เรย์ที่มีออบเจ็กต์หลากหลาย บางออบเจ็กต์มีฟิลด์วันที่ (ซึ่งเป็นสตริงที่มาจากเซิร์ฟเวอร์ ไม่ใช่ Date object) ส่วนบางออบเจ็กต์ฟิลด์นี้เป็น null

ข้อกำหนดคือ ต้องแสดงออบเจ็กต์ที่ไม่มีวันที่อยู่ด้านบน ส่วนที่มีวันที่ให้แสดงหลังจากนั้น โดยจัดเรียงตามฟิลด์วันที่

นอกจากนี้ สำหรับออบเจ็กต์ที่ไม่มีวันที่ ต้องจัดเรียงตามตัวอักษร (alphabetically)

ตัวอย่าง

const sorter = ((a, b) => {
  if (typeof a.date == 'undefined' && typeof b.date != 'undefined') {
    return -1;
  }
  else if (typeof a.date != 'undefined' && typeof b.date == 'undefined') {
    return 1;
  }
  else if (typeof a.date == 'undefined' && typeof b.date == 'undefined') {
    return a.name.localeCompare(b.name);
  }
  else if (a.date == null && b.date != null) {
    return -1;
  }
  else if (a.date != null && b.date == null) {
    return 1;
  }
  else if (a.date == null && b.date == null) {
    return 0;
  }
  else {
    var d1 = Date.parse(a.date);
    var d2 = Date.parse(b.date);
    return d1 - d2;
  }
});