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

遍历含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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 10:14:40