當屬性不一致時如何基於屬性對 JavaScript 物件列表進行排序


我們有一個包含各種物件的陣列。該陣列上的幾個物件具有 date 域(它基本上是從伺服器返回的字串,而不是 date 物件),而其他物件則該域為 null。

要求是,我們必須將沒有 date 的物件顯示在頂部,而帶有 date 的物件需要在它們之後按 date 域排序後顯示。

此外,對於沒有 date 的物件,需要按字母順序進行排序。

示例

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

更新時間:2020 年 11 月 23 日

90 次瀏覽

開啟你的 事業

完成課程即可獲得證書

開始
廣告