Java中遍历嵌套数组提取valueMAX并求和存储的方法
如何遍历嵌套对象数组并求和所有valueMAX值?
嘿,我来帮你搞定这个需求!针对这种把大数组拆分成多个子数组的嵌套结构,要提取所有对象的valueMAX并求和,有几种直观又好用的实现方式,我给你一一说明:
方法一:嵌套forEach循环(最易理解)
这是最直白的写法,逻辑清晰一目了然,适合刚接触数组操作的朋友:
let totalMax = 0; // 先遍历外层的每个子数组 nestedArray.forEach(subArray => { // 再遍历子数组里的每个对象 subArray.forEach(item => { // 先判断对象是否存在valueMAX属性,避免报错或出现NaN if (item?.valueMAX !== undefined) { totalMax += item.valueMAX; } }); }); console.log(totalMax); // 最终的valueMAX总和
方法二:扁平化数组 + reduce求和(最简洁)
如果你的嵌套数组只有一层(子数组直接嵌套在外层数组里,没有更深层级),可以先用flat()把嵌套数组转成一维数组,再用reduce快速求和:
// 一步到位的写法,扁平化后直接求和 const totalMax = nestedArray.flat().reduce((sum, item) => { // 若对象没有valueMAX,就加0,防止出现NaN return sum + (item?.valueMAX || 0); }, 0); console.log(totalMax);
要是你的嵌套数组有多层嵌套(比如子数组里还有子数组),只需要给flat()传Infinity参数,就能彻底扁平化所有层级:
const totalMax = nestedArray.flat(Infinity).reduce((sum, item) => sum + (item?.valueMAX || 0), 0);
方法三:嵌套reduce(无中间数组,性能友好)
如果不想创建扁平化的中间数组,直接用两层reduce来计算总和,内存占用更优:
const totalMax = nestedArray.reduce((outerTotal, subArray) => { // 先计算当前子数组里所有valueMAX的和 const subTotal = subArray.reduce((innerTotal, item) => { return innerTotal + (item?.valueMAX || 0); }, 0); // 把子数组的和加到外层总和里 return outerTotal + subTotal; }, 0); console.log(totalMax);
小提示
不管用哪种方法,都建议加上item?.valueMAX或者(item?.valueMAX || 0)的判断——这能避免数组里出现null、undefined或者缺少valueMAX属性的对象时,导致计算结果变成NaN。
内容的提问来源于stack exchange,提问作者Danut Andres
相关产品推荐
相关产品推荐

