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

使用Angular将现有数组对象转换为指定格式的新数组对象

你直接在Angular的组件/服务里写个转换方法就能实现,逻辑很简单:遍历原始数组的每一项,再分别处理in、low、medium三个统计字段,按字段对应的数值生成对应数量的条目,遇到medium值为0的情况直接跳过就行。

代码实现示例

如果用TypeScript的话可以先定义类型,也可以省略直接写逻辑:

// 原始数据类型(可选)
interface RawItem {
  testTargetname: string;
  in: number;
  low: number;
  medium: number;
}

// 转换后数据类型(可选)
interface TargetItem {
  testTargetname: string;
  [key: string]: string | number;
}

然后写转换方法,你可以放在需要用到的组件类里,或者封装成公共服务方法复用:

transformData(rawList: RawItem[]): TargetItem[] {
  const result: TargetItem[] = [];
  // 要处理的统计字段列表
  const statFields = ['in', 'low', 'medium'];

  rawList.forEach(rawItem => {
    statFields.forEach(field => {
      const count = rawItem[field as keyof RawItem];
      // 符合规则:medium为0时不生成条目
      if (field === 'medium' && count === 0) return;
      // 按计数生成对应数量的条目
      for (let i = 0; i < count; i++) {
        result.push({
          testTargetname: rawItem.testTargetname,
          [field]: 1
        });
      }
    });
  });

  return result;
}

调用方式

直接把你的原始数组传入方法就能拿到目标结果:

// 你的原始数据
const originArr = [
  { testTargetname: "Test system", in: 2, low: 1, medium: 2 },
  { testTargetname: "Test app", in: 2, low: 1, medium: 0 }
];

// 调用转换方法
const finalArr = this.transformData(originArr);
// 输出的finalArr就是你需要的格式
console.log(finalArr);

注:你给出的示例目标数组里Test system对应了3条medium条目,应该是笔误,按你给的原始数据medium值为2,代码会生成2条对应条目,如果你需要调整计数规则,直接修改判断逻辑即可。

内容的提问来源于stack exchange,提问作者Dr. Rill

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.11 21:18:02