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

按ISO日期排序对象数组时sort方法未生效的问题

问题原因及解决方法

你的问题出在Array.sort()的比较函数返回值不符合要求——sort的比较函数必须返回数字(负数、0、正数),而不是布尔值。

当你写(c,d) => c.fecha > d.fecha时,这个函数只会返回true或false,这两个值会被自动转换成1或0。但sort的逻辑是:

  • 返回负数:c排在d前面
  • 返回正数:d排在c前面
  • 返回0:两者位置不变

你的比较函数永远不会返回负数,所以无法正确触发元素的位置交换,导致数组看起来没变化。

正确的排序写法

因为你的日期是YYYY-MM-DD格式,字符串的字典序和日期的时间顺序完全一致,所以有两种简单的解决方式:

  1. 使用字符串的localeCompare方法(推荐,不需要转换日期对象):
a.sort((c, d) => c.fecha.localeCompare(d.fecha))
  1. 转换成Date对象后做数值减法:
a.sort((c, d) => new Date(c.fecha) - new Date(d.fecha))

执行任意一种后,数组会被正确排序为:

[
  { fecha: '2022-10-26', txt: 'some text' },
  { fecha: '2022-10-27', txt: 'some text' },
  { fecha: '2022-10-28', txt: 'some text' }
]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 21:25:23