You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JS中如何对包含“week”字段的对象数组的日期属性进行排序?

带week标识的日期对象数组排序方案

原逻辑问题

你此前采用的字符串长度排序逻辑不成立,因为字符串长度与日期先后没有对应关系,例如2023 week 9长度短于2023 week 10但时间更早,而2022 week 52长度长于2023 week 1但时间更早,按长度排序必然得到混乱结果。

正确实现思路

从每个对象的text属性中提取出年份、周数两个数值,优先按年份排序,年份相同的场景下再按周数排序即可得到正确的时间顺序。

代码实现

按时间从早到晚升序排序

dateButtons.sort((a, b) => {
  // 提取所有数字,第一个为年份,第二个为周数,转为数值类型
  const [yearA, weekA] = a.text.match(/\d+/g).map(Number)
  const [yearB, weekB] = b.text.match(/\d+/g).map(Number)
  // 优先比较年份
  if (yearA !== yearB) {
    return yearA - yearB
  }
  // 年份相同再比较周数
  return weekA - weekB
})

按时间从晚到早降序排序

如果需要倒序排列,调整返回值的减数顺序即可:

dateButtons.sort((a, b) => {
  const [yearA, weekA] = a.text.match(/\d+/g).map(Number)
  const [yearB, weekB] = b.text.match(/\d+/g).map(Number)
  if (yearA !== yearB) {
    return yearB - yearA
  }
  return weekB - weekA
})

内容的提问来源于stack exchange,提问作者Grant Solomons

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 13:36:00