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

使用map替代for循环重写TypeScript代码片段

需求与问题

我需要生成如下格式的JSON数据:

[
  {
    "id": 648302,
    "newArrGroups": [
      {
        "groupId": 660,
        "newArrGroups": []
      }
    ]
  },
  {
    "id": 648301,
    "newArrGroups": [
      {
        "groupId": 660,
        "newArrGroups": []
      }
    ]
  }
]

目前我通过for循环实现数据生成逻辑:遍历items数组(每个元素包含id字段),为每个元素添加newArrGroups字段(值为this.userPermissionsGroups),无论原元素是否已有分组,都会覆盖或添加该字段。代码如下:

const result: any = [];

for (let i = 0; i < this.items.length; i++) { 
  result.push({ id: this.items[i]?.id, newArrGroups: this.userPermissionsGroups });
}

我希望用更简洁的map方法替代for循环,但尝试的代码结果不符合预期:

function addArrayToEachElement(originalArray: number[], arrayToAdd: number[]): number[][] { 
  return originalArray.map(element => [element].concat(arrayToAdd));
}

请问如何用map实现正确的替代方案?


正确的map实现方案

直接使用Array.prototype.map遍历items数组,对每个元素返回包含目标字段的新对象即可,逻辑与原for循环完全一致:

const result = this.items.map(item => ({
  id: item?.id,
  newArrGroups: this.userPermissionsGroups
}));

补充说明

  • map方法会遍历数组每个元素,返回一个全新的数组,每个元素为你定义的结构对象
  • 如果需要保留原元素的其他字段(而非仅保留id),可以使用对象扩展运算符实现:
    const result = this.items.map(item => ({
      ...item, // 保留原元素所有原有字段
      newArrGroups: this.userPermissionsGroups // 覆盖或添加newArrGroups字段
    }));
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 02:22:08