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

如何对含UNIX时间戳date字段对象的Immutable JS List按日期排序?

按UNIX时间戳排序Immutable JS List的方法

嘿,这个需求其实很好实现,Immutable JS的List自带的sort()方法完全能搞定,而且因为Immutable的不可变性,排序后会返回一个新的List,原数据不会被改动,非常安全。

基础场景:元素是普通对象

如果你的List里是普通JS对象(就像你给出的示例),直接在sort()里传入一个比较函数,对比两个元素的date值就行:

import { List } from 'immutable';

// 你的原始数据
const originalList = List([
  { someKey: 1, date: 823748943 },
  { someKey: 2, date: 2389472938 },
  { someKey: 3, date: 81278734 }
]);

// 升序排序(从最早的时间到最晚)
const sortedAscending = originalList.sort((itemA, itemB) => itemA.date - itemB.date);

// 降序排序(从最晚的时间到最早)
const sortedDescending = originalList.sort((itemA, itemB) => itemB.date - itemA.date);

进阶场景:元素是Immutable Map

如果你的List里的元素是Immutable的Map(而不是普通对象),那获取date值的时候要用到get()方法,写法稍微调整一下:

import { List, Map } from 'immutable';

const mapList = List([
  Map({ someKey: 1, date: 823748943 }),
  Map({ someKey: 2, date: 2389472938 }),
  Map({ someKey: 3, date: 81278734 })
]);

// 升序排序
const sortedMapAsc = mapList.sort((mapA, mapB) => mapA.get('date') - mapB.get('date'));

简单解释下原理:UNIX时间戳本身就是数字,所以用减法就能直接得到排序所需的正负值——如果itemA.date - itemB.date是负数,说明A的时间更早,会排在前面;正数则相反。

内容的提问来源于stack exchange,提问作者four-eyes

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 07:38:44