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

如何从对象数组中获取晚于今日的最近日期对象

解决方法

首先要明确:Array.some() 方法的作用是判断数组中是否存在符合条件的元素,返回的是布尔值,没法直接帮你找到目标对象。要实现需求,你可以按以下步骤操作:

步骤1:过滤出日期符合要求的对象

先筛选出所有 PartialRedemptionDate 晚于当前日期的对象:

const now = new Date();
const validItems = poc.filter(item => new Date(item.PartialRedemptionDate) > now);

步骤2:从筛选结果中找出最近日期的对象

如果筛选后有有效数据,就通过比较日期找出离当前最近的那个;如果没有符合条件的对象,可返回 null 或其他默认值:

let closestDay = null;
if (validItems.length > 0) {
  closestDay = validItems.reduce((prev, curr) => {
    const prevDate = new Date(prev.PartialRedemptionDate);
    const currDate = new Date(curr.PartialRedemptionDate);
    // 保留更早的日期(即离当前最近的)
    return currDate < prevDate ? curr : prev;
  });
}

完整代码

把两步整合后的完整代码如下:

const poc = [
  {
    PartialRedemptionAmount: 2880000,
    PartialRedemptionDate: '2022-10-01T00:00:00Z',
    PartialRedemptionPrice: 100,
    PartialRedemptionType: 'UnscheduledRedemption',
  },
  {
    PartialRedemptionAmount: 2880000,
    PartialRedemptionDate: '2023-03-03T00:00:00Z',
    PartialRedemptionPrice: 100,
    PartialRedemptionType: 'UnscheduledRedemption',
  },
  {
    PartialRedemptionAmount: 2880000,
    PartialRedemptionDate: '2023-03-09T00:00:00Z',
    PartialRedemptionPrice: 100,
    PartialRedemptionType: 'UnscheduledRedemption',
  },
];

const now = new Date();
const validItems = poc.filter(item => new Date(item.PartialRedemptionDate) > now);

let closestDay = null;
if (validItems.length > 0) {
  closestDay = validItems.reduce((prev, curr) => {
    const prevDate = new Date(prev.PartialRedemptionDate);
    const currDate = new Date(curr.PartialRedemptionDate);
    return currDate < prevDate ? curr : prev;
  });
}

console.log(closestDay);

补充说明

  • filter 方法负责缩小范围,只保留日期晚于当前时间的对象,避免无效比较。
  • reduce 方法遍历有效数组,每次对比两个元素的日期,最终保留离当前最近的那个对象。
  • 若没有符合条件的对象,closestDay 会保持为 null,你可以根据业务需求调整默认返回值。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 11:03:31