JavaScript 按照日期值对对象数组进行排序
在本文中,我们将看到如何使用JavaScript按照日期值对对象数组进行排序。要对对象数组进行排序,我们可以使用sort()方法,该方法将回调函数作为参数。
为了按照单个键对对象数组进行排序,我们将使用以下方法:
- 使用sort()方法
- 使用带有自定义比较函数的sort()方法
- 使用getTime()方法的sort()方法
- 使用toISOString()方法的sort()方法
方法1:使用sort()方法
首先,我们将创建一个包含日期键的对象数组,然后使用sort()方法来按照日期键对对象数组进行排序。
语法:
array.sort((a, b) => a.date - b.date);
示例: 在这个示例中,我们使用sort()方法和减法来按照日期属性对arr对象数组进行升序排序。
JavaScript
const arr = [
{ name: 'Geeks', date: new Date('2022-03-15') },
{ name: 'Abc', date: new Date('2022-03-12') },
{ name: 'GFG', date: new Date('2022-03-20') },
{ name: 'G4G', date: new Date('2021-03-20') }
];
arr.sort((a, b) => a.date - b.date);
console.log(arr);
输出
[
{ name: 'G4G', date: 2021-03-20T00:00:00.000Z },
{ name: 'Abc', date: 2022-03-12T00:00:00.000Z },
{ name: 'Geeks', date: 2022-03-15T00:00:00.000Z },
{ name: 'GFG', date: 2022-03-20T00:00:00.000Z }
]
方法2:使用sort()方法和自定义比较函数
首先,我们将创建一个包含日期键的对象数组,然后使用创建一个排序函数来比较日期键,并根据日期键对对象进行排序。
语法:
array.sort(function (a, b) {
// Custom comparison logic here
});
示例: 在这个示例中,我们使用了上面解释的方法。
Javascript
const arr = [
{ name: 'Geeks', date: new Date('2022-03-15') },
{ name: 'Abc', date: new Date('2022-03-12') },
{ name: 'GFG', date: new Date('2022-03-20') },
{ name: 'G4G', date: new Date('2021-03-20') }
];
arr.sort(function(a, b) {
let x = new Date(a.date);
let y = new Date(b.date);
// Compare the 2 dates
if (x < y) return -1;
if (x > y) return 1;
return 0;
});
console.log(arr);
输出
[
{ name: 'G4G', date: 2021-03-20T00:00:00.000Z },
{ name: 'Abc', date: 2022-03-12T00:00:00.000Z },
{ name: 'Geeks', date: 2022-03-15T00:00:00.000Z },
{ name: 'GFG', date: 2022-03-20T00:00:00.000Z }
]
方法3:使用 sort() 方法和 getTime() 方法
在这种方法中,我们使用 sort() 方法和 getTime() 方法对对象数组按照日期属性进行排序,根据时间戳进行升序排序。
语法:
array.sort((a, b) => a.date.getTime() - b.date.getTime());
示例: 在这个示例中,使用sort()和getTime()来按照日期属性对arr对象数组进行升序排序。
JavaScript
const arr = [
{ name: 'Geeks', date: new Date('2022-03-15') },
{ name: 'Abc', date: new Date('2022-03-12') },
{ name: 'GFG', date: new Date('2022-03-20') },
{ name: 'G4G', date: new Date('2021-03-20') }
];
arr.sort((a, b) => a.date.getTime() - b.date.getTime());
console.log(arr);
输出
[
{ name: 'G4G', date: 2021-03-20T00:00:00.000Z },
{ name: 'Abc', date: 2022-03-12T00:00:00.000Z },
{ name: 'Geeks', date: 2022-03-15T00:00:00.000Z },
{ name: 'GFG', date: 2022-03-20T00:00:00....
方法4:使用sort()方法和toISOString()函数
在这个方法中,我们使用sort()方法和toISOString()函数对具有日期属性的对象数组arr按照日期的升序排序
语法:
array.sort((a, b) => a.date.toISOString().localeCompare(b.date.toISOString()));
示例: 在这个示例中,我们使用了上面解释的方法。
Javascript
const arr = [
{ name: 'Geeks', date: new Date('2022-03-15') },
{ name: 'Abc', date: new Date('2022-03-12') },
{ name: 'GFG', date: new Date('2022-03-20') },
{ name: 'G4G', date: new Date('2021-03-20') }
];
arr.sort((a, b) =>
a.date.toISOString().localeCompare(b.date.toISOString()));
console.log(arr);
输出
[
{ name: 'G4G', date: 2021-03-20T00:00:00.000Z },
{ name: 'Abc', date: 2022-03-12T00:00:00.000Z },
{ name: 'Geeks', date: 2022-03-15T00:00:00.000Z },
{ name: 'GFG', date: 2022-03-20T00:00:00....