js数组合并问题

有两个数组

arr1 = [
    {sect:1, date:'2022-03-20'},
    {sect:1, date:'2022-03-21'}
];
arr2 = [
    {sect:1, date:'2022-03-20'},
    {sect:2, date:'2022-03-21'},
    {sect:3, date:'2022-03-23'}
];

arr1的数据arr2不一定会有,arr2有的数据arr1也不一定会有,
根据今天的日期来把这两个数组合并在一起,
需要arr1今天以及今天之前的数据和arr2今天之后的数据,
比如说今天是21号,那么只要arr1里面21号和20号的数据和arr2里面23号的数据,arr2里面21号的数据就不要了

阅读 1.5k
2 个回答
const DAY_ON_MILLIS = 24 * 60 * 60 * 1000

function startOfDay(date) {
  date = new Date(date)
  date.setHours(0, 0, 0, 0)

  return date
}

function differenceDays(left, right) {
  left = startOfDay(left)
  right = startOfDay(right)

  return (right.getTime() - left.getTime()) / DAY_ON_MILLIS
}

function slicePrev(list, current = Date.now()) {
  return list.filter(item => differenceDays(item.date, current) >= 0)
}

function sliceNext(list, current = Date.now()) {
  return list.filter(item => differenceDays(current, item.date) > 0)
}

function mergeList(prevList, nextList, current = Date.now()) {
  return slicePrev(prevList, current).concat(sliceNext(nextList, current))
}

// 使用
mergeList(arr1, arr2)

我寻思着这思路你自己不是都写清楚了吗,还有啥问题呢?
获取当前时间戳?
字符串转时间戳?
for 遍历的语法?

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题