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

如何在含不同对象名的多维数组中找出最大delay值?

解决多维数组中对象delay属性的最大值查找问题

需求

从128×128×128的三维数组所有元素中,找出每个对象delay属性下first、term、slow、med、fast的最大数值,本例预期结果为360。

原代码问题分析

原代码存在以下关键错误:

  • 数组类型混乱:初始化时将三维位置设为空数组,但Initialize中直接赋值为对象,导致遍历部分元素时出现类型不匹配。
  • 无效循环层级:第四层循环遍历元素的length属性,但对象没有length,空数组也无有效数据,循环无法正确执行。
  • 未保留历史最大值:每次计算当前对象的delay最大值时直接覆盖maxValue,会丢失之前的更大值。
  • 无空值判断:数组中大部分位置为空,直接访问delay会引发错误。

修正后的代码

function Initialize() {
    ARR[127][1][0] = {name:"Gl", ss:["Z0",127,"B0",1,[58,0]], delay:{first:60, term:220, slow:240, med:188, fast:188}};
    ARR[127][127][0] = {name:"Gl Co", ss:["Z0",127,"B0",127,[58,0]], delay:{first:60, term:220, slow:240, med:188, fast:188}};
    ARR[127][1][6] = {name:"Gl El", ss:["Z0",127,"B0",1,[58,6]], delay:{first:60, term:310, slow:360, med:245, fast:145}};
    ARR[127][127][6] = {name:"Gl El Co", ss:["Z0",127,"B0",127,[58,6]], delay:{first:60, term:310, slow:330, med:245, fast:145}};
}

// 修正初始化:三维位置填充null,统一类型
var ARR = new Array(128);
for (let val1 = 0; val1 < ARR.length; val1++) {
  ARR[val1] = new Array(128);
  for (let val2 = 0; val2 < ARR[val1].length; val2++) {
    ARR[val1][val2] = new Array(128).fill(null);
  }
}

Initialize();

var maxValue = 0;

// 遍历三维数组
for (let i = 0; i < ARR.length; i++) {
  for (let j = 0; j < ARR[i].length; j++) {
    for (let k = 0; k < ARR[i][j].length; k++) {
      const item = ARR[i][j][k];
      // 跳过空元素,确保存在delay属性
      if (item && item.delay) {
        const currentDelayMax = Math.max(...Object.values(item.delay));
        // 更新全局最大值
        maxValue = Math.max(maxValue, currentDelayMax);
      }
    }
  }
}

console.log(maxValue); // 输出360

修正说明

  • 统一数组类型:将三维位置初始化为null,和后续赋值的对象类型匹配,避免遍历错误。
  • 简化循环:移除无意义的第四层循环,直接遍历三维数组的每个元素。
  • 空值校验:通过item && item.delay跳过未赋值元素,防止访问不存在的属性报错。
  • 保留全局最大值:使用Math.max(maxValue, currentDelayMax)确保每次只保留更大的数值。
  • 快速提取属性值:用Object.values(item.delay)获取delay的所有属性值,再通过Math.max()快速计算当前对象的delay最大值。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.16 21:04:52