以下是实现按状态和日期排序的示例代码:
首先定义一个包含需要排序项的数组:
var items = [
{ name: 'Item 1', status: 'Pending', date: '2021-08-01' },
{ name: 'Item 2', status: 'Complete', date: '2021-07-15' },
{ name: 'Item 3', status: 'In Progress', date: '2021-09-20' },
{ name: 'Item 4', status: 'Pending', date: '2021-05-01' },
{ name: 'Item 5', status: 'Complete', date: '2021-06-30' },
];
然后我们可以使用 sort() 方法排序,该方法可以传递一个比较函数来指定排序规则。对于我们要实现的排序,我们需要按状态排序前,先按日期排序。因此我们需要创建一个比较函数来实现此类型的排序:
items.sort(function(a, b) {
var statusOrder = {
'Pending': 1,
'In Progress': 2,
'Complete': 3
};
if (statusOrder[a.status] < statusOrder[b.status]) {
return -1;
}
if (statusOrder[a.status] > statusOrder[b.status]) {
return 1;
}
if (a.date < b.date) {
return -1;
}
if (a.date > b.date) {
return 1;
}
return 0;
});
在此代码中,我们首先定义了一个 statusOrder 对象,用于将不同的状态映射到数字,以便进行比较。
然后我们使用了一系列 if 语句来比较两个对象的状态和日期。如果第一个对象的状态小于第二个对象的状态,则我们返回 -1,表示第一个对象应该排在前面。如果第一个对象的状态大于第二个对象的状态,则我们返回 1,表示第二个对象应该排在前面。