重写代码片段而不是 For 循环

问题描述 投票:0回答:1

我在

jSon
中有以下数据格式:

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

这就是我使用

for loop
添加数据的方法:

const result: any = [];

for (let i = 0; i < this.items.length; i++) { //item is an array with the id element
  result.push({ id: this.items[i]?.id, newArrGroups: this.userPermissionsGroups });
}

它的作用是迭代 items 数组中的每个元素,并将该组添加到 items 数组的每个元素,作为数据样本中显示的新数组。没有关系,因此如果存在任何现有组,则会将其添加到 items 数组的每个元素中。我试图以更好的方式做到这一点,用

map
说。是否有可能而不是如下所示的
for loop
(我知道,这会生成不同的结果集)?

function addArrayToEachElement(originalArray: number[], arrayToAdd: number[]): number[][] { 
  return originalArray.map(element => [element].concat(arrayToAdd));
}
arrays angular typescript angular15
1个回答
0
投票

由于缺乏输入数据,我不得不对其进行逆向工程。 使用

map()
转换数据:

const userPermissionsGroups = [
  {
    groupId: 660,
    newArrGroups: []
  }
];

const items = [
 {id: 648302},
 {id: 648301}
];

const newItems = items.map(item => {
  return {
    id: item.id,
    newArrGroups: userPermissionsGroups
  };
});

console.log(JSON.stringify(newItems, undefined, 2));

© www.soinside.com 2019 - 2024. All rights reserved.