【问题标题】:Sort array to get the nearest from today first排序数组以首先从今天开始
【发布时间】:2021-12-12 01:57:55
【问题描述】:

我有一个这样的数组:

array = [
  {
    "title": "a",
    "date": "2021-10-25T18:00:00.000"
  },
  {
    "title": "b",
    "date": "2021-10-20T18:00:00.000"
  },
  {
    "title": "b",
    "date": "2021-10-28T18:00:00.000"
  },
  {
    "title": "b",
    "date": "2021-10-30T18:00:00.000"
  },
  {
    "title": "b",
    "date": "2021-10-26T18:00:00.000"
  }
]

我想先从今天开始用最近的对象对其进行排序。 我尝试排序,但我认为,我没有这样做的好方法。

这是我尝试过的:

array.sort((a, b) => {
   return (new Date(b.battle_start) > new Date()) - (new Date(a.battle_start) < new Date())
})

这就是我想要的

array = [
  {
    "title": "b",
    "date": "2021-10-26T18:00:00.000"
  },
  {
    "title": "a",
    "date": "2021-10-25T18:00:00.000"
  },
  {
    "title": "b",
    "date": "2021-10-28T18:00:00.000"
  },
  {
    "title": "b",
    "date": "2021-10-30T18:00:00.000"
  },
  {
    "title": "b",
    "date": "2021-10-20T18:00:00.000"
  }
]

【问题讨论】:

  • 如果您没有尝试,您的问题很可能会被否决、无人回答或关闭。总是表明你已经尝试了一些东西。 '排序'是你想要的
  • 谢谢,我明白了,我尝试编辑我的帖子:)
  • 你先描述你想得到什么。您想获得第二和第三什么,...您能否为您的示例输入提供预期的输出?
  • 对不起,我用结果编辑

标签: javascript arrays date sorting


【解决方案1】:

您的代码可以修改为使用Math.abs,这样与过去或未来的距离将以同样的方式看待:

const array = [{"title": "a","date": "2021-10-25T18:00:00.000"},{"title": "b","date": "2021-10-20T18:00:00.000"},{"title": "b","date": "2021-10-28T18:00:00.000"},{"title": "b","date": "2021-10-30T18:00:00.000"},{"title": "b","date": "2021-10-26T18:00:00.000"}];
let now = Date.now();
array.sort((a,b) =>
   Math.abs(Date.parse(a.date) - now) - Math.abs(Date.parse(b.date) - now)
);

console.log(array);

【讨论】:

    【解决方案2】:

    你应该可以通过:

    array.sort((a, b) => {
      return (Math.abs(new Date(a.battle_start) - new Date())) - Math.abs((new Date(b.battle_start) - new Date()))
    })
    

    你要比较的是“现在”和目标日期之间的距离。

    【讨论】:

    • 完美!这绝对是我需要的!非常感谢
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-12-03
    • 1970-01-01
    • 2020-12-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多