遍历含null的多数组对象:计算首尾有效数值累加和
解决方法:累加每个数组的第一个和最后一个非null值
嘿,我明白你的需求了!你需要遍历每个series对象,提取其options.data数组里的第一个非null值和最后一个非null值,分别累加起来。下面是具体的实现方案:
步骤1:初始化累加变量
首先定义两个变量来存储累加结果,初始值设为0:
let firstNonNullTotal = 0; let lastNonNullTotal = 0;
步骤2:遍历series并处理每个数据数组
在你的forEach循环里,针对每个element.options.data,我们需要找到第一个和最后一个非null值,然后判断是否有效(避免全null的数组导致NaN),再累加到对应变量中。
完整代码示例
// 初始化累加变量 let firstNonNullTotal = 0; let lastNonNullTotal = 0; this.chart.ref.series.forEach(element => { const dataArray = element.options.data; // 获取第一个非null值 const firstValid = dataArray.find(item => item !== null); // 只有找到有效值时才累加 if (firstValid !== undefined) { firstNonNullTotal += firstValid; } // 获取最后一个非null值(方式1:反转数组后找第一个) const reversedArray = [...dataArray].reverse(); const lastValid = reversedArray.find(item => item !== null); // 方式2:从后往前遍历(适合大数组,无需复制反转) // let lastValid; // for (let i = dataArray.length - 1; i >= 0; i--) { // if (dataArray[i] !== null) { // lastValid = dataArray[i]; // break; // } // } if (lastValid !== undefined) { lastNonNullTotal += lastValid; } }); // 输出结果 console.log('所有数组第一个非null值的总和:', firstNonNullTotal); console.log('所有数组最后一个非null值的总和:', lastNonNullTotal);
额外说明
- 如果你的数据数组中可能存在
undefined,而你想同时排除null和undefined,可以把判断条件改成item != null(双等号,会同时匹配null和undefined)。 - 第二种找最后一个有效值的方式(从后往前遍历)不需要复制数组,在处理大型数组时性能更优,你可以根据实际情况选择。
内容的提问来源于stack exchange,提问作者Yash Jain
相关产品推荐
相关产品推荐

