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

JavaScript如何按嵌套story数组的timestamp对上层对象排序

实现方案

你可以直接在原有逻辑的基础上,新增外层数组的排序逻辑即可,具体实现分两种场景:

场景1:需要保留每个用户内部story数组按时间升序排序的逻辑

原有内部排序逻辑不变,排序外层数组时直接取已排序的story数组最后一位的timestamp作为排序依据即可:

const res = [/* 你的原始数据 */];

// 原有逻辑:每个用户的story内部按timestamp升序排序
res.forEach(val => {
  val.story.sort((a, b) => a.timestamp - b.timestamp);
});

// 新增:外层数组按用户最新story时间降序排序
res.sort((a, b) => {
  // 空story兜底为0,默认排在最后
  const aLatestTime = a.story.length ? a.story.at(-1).timestamp : 0;
  const bLatestTime = b.story.length ? b.story.at(-1).timestamp : 0;
  return bLatestTime - aLatestTime;
});

提示:如果需要兼容ES2022以下的运行环境,把a.story.at(-1)替换为a.story[a.story.length - 1]即可。

场景2:不需要修改每个用户内部story数组的顺序

可以直接计算每个用户story数组的最大timestamp作为排序依据,无需提前排序内部数组:

const res = [/* 你的原始数据 */];

res.sort((a, b) => {
  // 提取单个用户的最新story时间
  const getLatestTimestamp = (user) => {
    if (!user.story.length) return 0;
    return Math.max(...user.story.map(storyItem => storyItem.timestamp));
  };
  return getLatestTimestamp(b) - getLatestTimestamp(a);
});

以上两种方案运行后,示例中first_name为EEEE的用户都会排在第一位,符合你的排序要求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 19:24:03