js日期排序

目的: 根据一个对象 或者 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() 进行排序, 排序完成根据数组取值

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容