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

如何在Node.js中按时间戳获取各团队的最新数据?

在Node.js中获取每个团队最新数据的最优实现方法

针对你提出的需求——从包含时间戳的团队进球数据数组中,筛选出每个团队**最新(时间戳最大)**的条目,我整理了两种实用的实现方式,其中第一种是效率最优的方案:

最优方案:使用reduce遍历一次完成(时间复杂度O(n))

这种方法只需要遍历数组一次,通过对象来记录每个团队的最新数据,是处理这类问题的高效方式,尤其适合数据量较大的场景:

const my_array = [ 
  { timestamp: '1571967208', team: 'team1', goals: '2' }, 
  { timestamp: '1571967150', team: 'team2', goals: '1' }, 
  { timestamp: '1571967110', team: 'team1', goals: '0' }, 
  { timestamp: '1571967067', team: 'team3', goals: '4' }, 
  { timestamp: '1571966896', team: 'team1', goals: '5' }, 
];

// 用reduce构建以团队名为键的对象,仅保留每个团队的最新数据
const latestByTeam = my_array.reduce((acc, current) => {
  // 将时间戳转为数字,避免字符串比较的潜在问题
  const currentTs = Number(current.timestamp);
  // 如果当前团队未被记录,或当前条目时间戳比已存的更新,则替换
  if (!acc[current.team] || currentTs > Number(acc[current.team].timestamp)) {
    acc[current.team] = current;
  }
  return acc;
}, {});

// 将对象的值转换为数组,得到最终结果
const result = Object.values(latestByTeam);
console.log(result);

为什么这是最优解?

  • 仅需一次遍历数组,时间复杂度为O(n),比排序后筛选的方式效率更高
  • 不会修改原数组,属于纯函数式处理,符合Node.js的最佳实践
  • 逻辑清晰,通过对象的键唯一性自动去重并保留最新条目

备选方案:先排序再筛选(逻辑更直观)

如果你的数据量不大,也可以选择先按时间戳降序排序,再筛选出每个团队的第一条数据,逻辑上更容易理解:

const my_array = [ 
  { timestamp: '1571967208', team: 'team1', goals: '2' }, 
  { timestamp: '1571967150', team: 'team2', goals: '1' }, 
  { timestamp: '1571967110', team: 'team1', goals: '0' }, 
  { timestamp: '1571967067', team: 'team3', goals: '4' }, 
  { timestamp: '1571966896', team: 'team1', goals: '5' }, 
];

// 先复制数组并按时间戳降序排序(避免修改原数组)
const sortedArray = [...my_array].sort((a, b) => Number(b.timestamp) - Number(a.timestamp));

// 用Set记录已处理的团队,只保留每个团队的第一条(最新)数据
const seenTeams = new Set();
const result = sortedArray.filter(item => {
  if (!seenTeams.has(item.team)) {
    seenTeams.add(item.team);
    return true;
  }
  return false;
});

console.log(result);

注意事项

无论使用哪种方法,都一定要将时间戳转换为数字后再比较——因为字符串类型的数字在长度不同时(比如'1000'和'999'),字符串比较会得到错误的结果,转成数字才能保证时间戳比较的准确性。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 09:00:46