目的: 根据一个对象 或者 map 进行日期排序
Map: { '2022-11-30' => {...}, '2022-10-30' => {...}}
Array: ['2022-11-30', '2022-10-19', '2022-11-20'...]
/**
* @param {*} arr HashMap || Array
* @return HashMap || Array
*/
function sortDate(arr) {
if(arr.size && arr instanceof Object) {
let map = new Map()
let arr2 = []
let obj = {}
arr.forEach((value, key) => {
obj[new Date(key).getTime()] = key
arr2.push(new Date(key).getTime())
});
arr2.sort()
arr2.forEach((item)=>{
map.set(obj[item], arr.get(obj[item]))
})
return map
} else if(Array.isArray(arr)) {
let arr2 = []
let obj = {}
for (let i = 0; i < arr.length; i++) {
let item = arr[i]
obj[new Date(item).getTime()] = item
arr2.push(new Date(item).getTime())
}
arr2.sort()
arr2.forEach((item, index, arr3)=>{
arr3[index] = obj[item]
})
console.log(arr2)
return arr2
}
throw new Error(arr + '不是一个 Array 或 HashMap')
}
解析: 主要是通过时间戳进行时间排序。
思路: 用 键值对 保存时间戳以及对应的日期, 再定义一个数组 保存时间戳,可以使用数组方法 sort()
进行排序, 排序完成根据数组取值