如何根据日期字符进行串排序?

const arr = [

    {
        name: 'AAA',
        date: '2023/02/03'
    },

    {
        name: 'BBB',
        date: '2023/03/05'
    },

    {
        name: 'CCC',
        date: '2022/02/07'
    }

];

console.log(
    // 需要输出arr里的对象, 按照date排序
);
阅读 1.7k
7 个回答
const arr = [
    {
        name: 'AAA',
        date: '2023/02/03'
    },
    {
        name: 'BBB',
        date: '2023/03/05'
    },
    {
        name: 'CCC',
        date: '2022/02/07'
    }
];

arr.sort((a, b) => new Date(a.date) - new Date(b.date));

console.log(arr);

arr.sort((a,b) => a.date.replace(/\//g,'')-b.date.replace(/\//g,''))
arr.sort((a,b) => new Date(a.date)-new Date(b.date))

arr.sort((a, b) => {
    const dateA = new Date(a.date);
    const dateB = new Date(b.date);
    return dateA - dateB;
});

使用Array.sort()方法,比较函数接收两个参数a和b,将对象的date属性转换为Date对象,并通过减法运算符进行比较,以确定排序顺序

封装了一个函数,传入数组,默认是升序

function sortByDate(arr, order = 'asc') {
    return arr.sort((a, b) => {
        const dateA = new Date(a.date);
        const dateB = new Date(b.date);
        if (order === 'asc') {
            return dateA - dateB;
        } else if (order === 'desc') {
            return dateB - dateA;
        } else {
            throw new Error("Order must be 'asc' or 'desc'");
        }
    });
}
// 示例使用:
const sortedAsc = sortByDate(arr);  // 不传第2个参数,默认为升序
console.log(sortedAsc);

const sortedDesc = sortByDate(arr, 'desc');  // 降序
console.log(sortedDesc);
const result = arr.sort((a, b) => new Date(b.date) - new Date(a.date));
console.log(result);

这个日期字符串很规范,月日不足两位的还有前置0,直接字符串比较就行了。

arr.sort((a,b) => a.date < b.date ? -1 : 1)

这种规范的日期字符串,字符串大小就是日期大小,可以直接比较

arr.sort(({ date: a }, { date: b }) => a < b ? -1 : a > b ? 1 : 0);
推荐问题
宣传栏