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

使用递归方式查找对象数组最高sequence值并分配对应属性值

方案说明

你当前的需求是遍历一维对象数组,筛选出coverage.agent.sequence属性最大值的对应项,再取值,完全不需要递归实现,用JavaScript内置的Array.reduce()方法就可以非常简洁地完成,代码可读性和性能都优于嵌套循环、递归方案。

最优实现(reduce方案)

// 遍历对比sequence值,保留最大值对应的对象,直接取finish属性
const subscriptionEndDate = data.reduce((maxItem, currentItem) => {
  return currentItem.coverage.agent.sequence > maxItem.coverage.agent.sequence 
    ? currentItem 
    : maxItem
}, data[0]).coverage.finish;

运行后subscriptionEndDate的结果就是你预期的'2021-12-25'。


递归方案(仅作参考,无特殊需求不推荐)

如果一定要用递归实现,也可以通过递推遍历的逻辑完成,本质是模拟循环的执行过程:

function getMaxFinish(arr, index = 0, maxItem = arr[0]) {
  // 遍历结束直接返回最大值对应项的finish属性
  if (index >= arr.length) return maxItem.coverage.finish;
  const current = arr[index];
  // 对比更新最大值项
  if (current.coverage.agent.sequence > maxItem.coverage.agent.sequence) {
    maxItem = current;
  }
  return getMaxFinish(arr, index + 1, maxItem);
}

const subscriptionEndDate = getMaxFinish(data);

该方案对于一维数组场景没有优势,仅适合特殊的嵌套结构遍历场景使用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 18:06:01