当属性不一致时,如何根据属性对 JavaScript 对象列表进行排序

javascriptweb developmentfront end technologyobject oriented programming更新于 2024/1/2 16:12:17

我们有一个包含各种对象的数组。此数组中的一些对象具有日期字段(基本上是从服务器返回的字符串,而不是日期对象),而其他对象则此字段为空。

要求我们必须将没有日期的对象显示在顶部,而那些有日期的对象需要按日期字段排序显示在它们后面。

此外,对于没有日期的对象,需要按字母顺序排序。

示例

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

相关文章


有用资源