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

如何遍历字典数组提取各子数组末尾元素并按timeStamp排序

实现方案

核心逻辑拆分

  • 第一步:遍历外层总数组,对每个内层子数组执行末位元素提取,将所有提取结果汇总为临时数组
    • 提取时建议增加判空校验,遇到空的子数组直接过滤,避免运行时报错
  • 第二步:对临时数组内的元素,读取其嵌套结构中的timeStamp字段值,按数值大小完成排序
    • 你提供的timeStamp是毫秒级时间戳,本身就是可直接比较的数值类型,不需要做格式转换就能对应真实时间先后关系

注意:你贴出的原始数据写法语类 Swift/Objective-C 字面量,并非标准JSON结构,解析为可用程序对象后,每个数组元素均为「消息ID为键、消息详情为值」的字典结构,和示例代码的结构一致。

可直接参考的JavaScript实现示例

// 修正键值对语法后的原始数据
const rawData = [
  [
    {
      "-MXpvzmZdbqzrjND8w9F": {
        lid: "-MW6eEidZFCLeeZ0uBk1",
        message: "hi",
        timeStamp: 1617960107264,
        title: "Sambhar Dosa",
        user: "1QSU0c1q8QNrZzmICXGClC0o86E3"
      }
    },
    {
      "-MXq5NAyrkk4ZcvRFM7T": {
        lid: "-MW6eEidZFCLeeZ0uBk1",
        message: "how ru?",
        timeStamp: 1617962828647,
        title: "Sambhar Dosa",
        user: "1QSU0c1q8QNrZzmICXGClC0o86E3"
      }
    }
  ],
  [
    {
      "-MXqa5-pkC28lY_Q_hpZ": {
        lid: "-MWwEpHAhIdhN0i5sltB",
        message: "hi nice cycle",
        timeStamp: 1617971142820,
        title: "Cycle for kids",
        user: "1QSU0c1q8QNrZzmICXGClC0o86E3"
      }
    }
  ]
];

// 1. 提取每个非空子数组的最后一个元素
const lastElements = rawData
  .filter(subArr => subArr.length > 0)
  .map(subArr => subArr[subArr.length - 1]);

// 2. 按timeStamp升序排序
const sortedResult = lastElements.sort((a, b) => {
  // 取出单个元素内嵌套的消息详情中的timeStamp值
  const timeA = Object.values(a)[0].timeStamp;
  const timeB = Object.values(b)[0].timeStamp;
  return timeA - timeB;
});
  • 如果使用Swift开发,仅需要将取末位元素的逻辑替换为subArr.last,排序时直接读取对应字典的timeStamp值做比较即可,核心逻辑完全通用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.25 12:54:07