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

JS新手如何计算嵌套数组内对应条目的累计time总和

实现方案

可以通过一个全局累加对象记录每个crew的历史累计时长,遍历数组逐条目计算total字段即可,实现代码如下:

// 用于存储每个crew编号对应的累计time值
const crewTimeAcc = {};

// 遍历处理原始数组,返回新的结果数组,不会修改原输入数据
const processedResult = results.map(item => {
  // 拷贝当前条目的所有基础属性,避免修改原数据
  // 如果数据包含特殊类型可替换为 structuredClone(item)
  const newItem = JSON.parse(JSON.stringify(item));
  
  // 计算当前条目的total字段
  newItem.total = newItem.results.map(crewRecord => {
    const crewId = crewRecord.crew;
    // 累加对应crew的时长,首次出现的crew默认初始累计值为0
    crewTimeAcc[crewId] = (crewTimeAcc[crewId] || 0) + crewRecord.time;
    // 拷贝当前船员记录,替换time为累计值
    return {
      ...crewRecord,
      time: crewTimeAcc[crewId]
    };
  });

  return newItem;
});

代码说明

  • 实现支持任意数量的数组条目、每个条目下任意数量的crew记录,只要crew编号唯一就能正确累加对应时长
  • 若业务场景中同一个crew的disc、speed等属性可能发生变化,以当前条目的属性为准,完全符合你给出的输出结构要求
  • 若不需要保留原数组数据,也可以去掉深拷贝逻辑直接修改原数组,减少性能消耗

内容的提问来源于stack exchange,提问作者Александр Пахомов

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.18 01:15:07