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

如何在JavaScript中使用reduce方法查找最新created日期的对象

问题:找出数组中created日期最新的对象

我有如下数组:

const items = [
        { id: 'djw8701', created: '2019-10-05T11:06:20.208Z', url: 'url1' },
        { id: 'djw8702', created: '2019-10-15T12:06:21.208Z', url: 'url2' },
        { id: 'djw8703', created: '2019-10-20T13:06:22.208Z', url: 'url3' }
      ]

希望比较数组中的对象,找出created日期最新的对象(即items[2]),但编写的reduce方法返回空值:

items?.reduce((curr, acc) => {
          if (curr.created < acc.created) {
            return { ...acc };
          }
        })
问题分析与修正

你的reduce代码存在三个核心问题:

  • 参数顺序颠倒:reduce回调的第一个参数是累加器(acc),第二个是当前遍历元素(curr),你搞反了顺序,导致比较逻辑完全错误。
  • 缺少默认返回值:当条件不满足时没有返回值,会让后续迭代的累加器变成undefined,最终返回空。
  • 冗余的对象解构:直接返回目标对象即可,不需要用{ ...acc }做无意义的拷贝。

修正后的代码如下:

const latestItem = items?.reduce((acc, curr) => {
  // ISO格式的日期字符串可直接按字典序比较大小
  return curr.created > acc.created ? curr : acc;
}, items[0]); // 传入初始值,确保迭代逻辑从第一个元素开始

补充说明

  • 传入初始值items[0]可以避免数组只有单个元素时的异常,同时让逻辑更清晰。
  • 如果需要处理数组为空的情况,可以额外判断:
const latestItem = items?.length 
  ? items.reduce((acc, curr) => curr.created > acc.created ? curr : acc, items[0])
  : null; // 数组为空时返回null,可根据需求调整默认值

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 21:21:14