所以我试图按日期对对象数组进行排序,但我希望具有日期的对象优先于具有空日期的对象。
非排序数组示例:
[
{due_date: null},
{due_date: '03/11/2020'},
{due_date: '02/10/2020'}
]
Run Code Online (Sandbox Code Playgroud)
我希望数组在排序后按此顺序排列
[
{due_date: '02/10/2020'},
{due_date: '03/11/2020'},
{due_date: null}
]
Run Code Online (Sandbox Code Playgroud)
但是,当我通过脚本运行数组时
var firstSort = 'due_date'
return array.sort((a, b) => {
return new Date(a[this.firstSort]) - new Date(b[this.firstSort])
})
Run Code Online (Sandbox Code Playgroud)
我得到这个结果
[
{due_date: null},
{due_date: '02/10/2020'},
{due_date: '03/11/2020'}
]
Run Code Online (Sandbox Code Playgroud)
如何在排序时比较空日期或排除它?
将字符串转换为日期并排序。对于空值,请在遥远的将来使用日期,以便它们将排序到最后。
let dates = [
{ due_date: null },
{ due_date: '03/11/2020' },
{ due_date: '02/10/2020' }
]
const distantFuture = new Date(8640000000000000)
const firstSort = 'due_date'
let sorted = dates.sort((a, b) => {
let dateA = a[firstSort] ? new Date(a[firstSort]) : distantFuture
let dateB = b[firstSort] ? new Date(b[firstSort]) : distantFuture
return dateA.getTime() - dateB.getTime()
})
console.log(sorted)Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
980 次 |
| 最近记录: |