javascript - if如何将数组中的所有元素移动到底部?

标签 javascript

如果数组(对象)的元素没有日期字段,如何将数组中的所有元素移动到底部?

let records = [{"id": 1}, {"id": 2, "date": new Date()}];

return records.sort(function(a: any, b: any) {
      return a.hasOwnProperty('date')
        ? -1
        : b.hasOwnProperty('date')
        ? 1
        : 0;
    });

所以我需要对所有带有日期的元素进行排序,并将其他没有日期的元素放置在列表底部。

最佳答案

您可以通过检查增量来检查不需要的内容并将其移动到底部。

const
    getISO = d => d instanceof Date
        ? d.toISOString()
        : d;

let records = [{ id: 1 }, { id: 2, date: new Date('2020-01-01') }, { id: 3 }, , { id: 2 }, { id: 4, date: new Date }];

records.sort((a, b) => 
    Number('date' in b) - Number('date' in a) ||
    getISO(b.date || '').localeCompare(getISO(a.date || ''))
);

console.log(records);

关于javascript - if如何将数组中的所有元素移动到底部?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60241263/

相关文章:

javascript - 语法错误,无法识别的表达式 : a[href=#]

javascript - 初始化后查找 Leaflet map 对象

javascript - 单击时从 jquery 可排序列表中删除一个元素

javascript - jquery 文本输入搞笑

javascript - 在 React 中的功能组件上设置 defaultProps

javascript - 页面可见性 API - 更改浏览器控制台选项卡以使其表现得像事件状态

javascript - HTML事件同时弹出,如何只选一个

Javascript动画多次运行时闪烁

javascript - 有没有一种方法可以在使用 Typescript 运行时之前检查函数参数是否具有允许的值?

javascript - UI 未更新 React 和 Redux