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

JavaScript:从多组对象数组末尾元素中获取value最大值对象的问题

解决多组对象数组中获取value最大对象的问题

核心思路

先提取每组数组的最后一个元素,再从这些元素中筛选出value值最大的对象。

方法一:使用map + reduce

// 示例acc结构
const acc = [
  [{key:1, value:3}, {key:1, value:6}],
  [{key:2, value:5}, {key:2, value:9}],
  [{key:3, value:1}, {key:3, value:2}]
];

// 提取每组最后一个元素
const lastItems = acc.map(group => group[group.length - 1]);

// 遍历找到value最大的对象
const maxObj = lastItems.reduce((prev, curr) => {
  return curr.value > prev.value ? curr : prev;
});

console.log(maxObj); // 输出 {"key":2,"value":9}

方法二:使用Math.max + find

如果习惯用Math.max,可以先提取所有value值找到最大值,再匹配对应的对象:

const lastItems = acc.map(group => group[group.length - 1]);
const maxValue = Math.max(...lastItems.map(item => item.value));
const maxObj = lastItems.find(item => item.value === maxValue);

console.log(maxObj); // 输出 {"key":2,"value":9}

处理边界情况

如果存在空数组的组,需要先过滤避免报错:

const validLastItems = acc
  .filter(group => group.length > 0) // 过滤空数组
  .map(group => group[group.length - 1]);

if (validLastItems.length === 0) {
  console.log("无有效数据");
} else {
  const maxObj = validLastItems.reduce((prev, curr) => {
    return curr.value > prev.value ? curr : prev;
  });
  console.log(maxObj);
}

为什么之前的Math.max不生效?

你之前只传入了单个组的最后一个value(acc[acc.length - 1].value),而Math.max需要接收所有待比较的数值集合。通过扩展运算符...把所有value展开成参数,就能正常使用Math.max了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 22:25:22