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

如何修改对象数组:处理null值的current_result并补充not_tested属性

如何处理项目测试结果数组的空值与属性补充?

我来帮你搞定这个数组处理的需求!针对你给出的项目测试数据,我们可以用JavaScript的数组方法轻松实现需求,先明确核心要求:

  • 当current_result为null时,替换成包含success_percentage:0、failure_percentage:0、skip_percentage:0和not_tested:100的对象
  • 当current_result不为null时,给它新增not_tested:0的属性

方案一:返回新数组(不修改原数据)

这种方式会生成一个全新的结果数组,原始数据保持不变,适合需要保留原始数据的场景:

const data = [
  {
    vertical_name: "CORE",
    projects: [
      {
        name: "Alpha",
        id: 187,
        current_result: null,
      }
    ]
  },
  {
    vertical_name: "release",
    projects: [
      {
        name: "Beta",
        id: 27,
        current_result: { success_percentage: 37, failure_percentage: 25, skip_percentage: 36 }
      },
      {
        name: "Charlie",
        id: 47,
        current_result: { success_percentage: 37, failure_percentage: 25, skip_percentage: 36 }
      }
    ]
  }
];

const result = data.map(vertical => ({
  ...vertical,
  projects: vertical.projects.map(project => {
    let currentResult;
    if (project.current_result === null) {
      currentResult = {
        success_percentage: 0,
        failure_percentage: 0,
        skip_percentage: 0,
        not_tested: 100
      };
    } else {
      // 复制原对象并新增属性,避免污染原数据
      currentResult = {
        ...project.current_result,
        not_tested: 0
      };
    }
    return {
      ...project,
      current_result: currentResult
    };
  })
}));

console.log(result);

方案二:直接修改原数组

如果不需要保留原始数据,这种方式更节省内存,直接在原数组上修改:

const data = [
  {
    vertical_name: "CORE",
    projects: [
      {
        name: "Alpha",
        id: 187,
        current_result: null,
      }
    ]
  },
  {
    vertical_name: "release",
    projects: [
      {
        name: "Beta",
        id: 27,
        current_result: { success_percentage: 37, failure_percentage: 25, skip_percentage: 36 }
      },
      {
        name: "Charlie",
        id: 47,
        current_result: { success_percentage: 37, failure_percentage: 25, skip_percentage: 36 }
      }
    ]
  }
];

data.forEach(vertical => {
  vertical.projects.forEach(project => {
    if (project.current_result === null) {
      project.current_result = {
        success_percentage: 0,
        failure_percentage: 0,
        skip_percentage: 0,
        not_tested: 100
      };
    } else {
      project.current_result.not_tested = 0;
    }
  });
});

// 此时data已经是处理后的结果
console.log(data);

代码思路说明

  1. 外层遍历每个业务线(vertical)对象,针对每个业务线的projects数组做内层处理
  2. 内层遍历每个项目(project)对象:
    • 判断current_result是否为null,是则替换为指定的默认对象
    • 非空则补充not_tested:0属性(方案一用对象展开复制,方案二直接修改原属性)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.30 11:24:07