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

วิธีจัดเรียงรายการวัตถุ JavaScript ตามคุณสมบัติเมื่อคุณสมบัติไม่สอดคล้องกัน


เรามีอาร์เรย์ที่มีวัตถุต่างๆ ออบเจ็กต์บางรายการในอาร์เรย์นี้มีฟิลด์วันที่ (ซึ่งโดยทั่วไปแล้วจะส่งคืนเป็นสตริงจากเซิร์ฟเวอร์ ไม่ใช่อ็อบเจ็กต์วันที่) ในขณะที่สำหรับรายการอื่นๆ ฟิลด์นี้จะเป็นโมฆะ

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

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

ตัวอย่าง

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;
   }
});