json数组格式转换

[{name: '省级校验不合规', value: 0, type: 'top_1'},
{name: '行政处罚修复', value: 100000, type: 'top_1'},
{name: '浙江迟报', value: 200, type: 'top_1'},
{name: '新行政处罚', value: 0, type: 'top_1'},
{name: '国家校验不合规', value: 0, type: 'top_1'},
{name: '省级校验不合规', value: 100, type: 'top_2'},
{name: '新行政许可', value: 200000, type: 'top_2'},
{name: '国家校验不合规', value: 500, type: 'top_2'},
{name: '浙江迟报', value: 0, type: 'top_2'}]

[{name: '省级校验不合规', number1: 0, number2: 100},
{name: '行政处罚修复', number1: 100000, number2: 0},
{name: '浙江迟报', number1: 200, number2: 0},
{name: '新行政处罚', number1: 0, number2: 0},
{name: '国家校验不合规',number1: 0, number2: 500},
{name: '新行政许可', number1: 2000, number2: 0}]

上面的数组想变成下面的数组怎么变啊 求帮一下

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>登录页</title>
  </head>

  <body>
    <script>
      const arr = [
        { name: "省级校验不合规", value: 0, type: "top_1" },
        { name: "行政处罚修复", value: 100000, type: "top_1" },
        { name: "浙江迟报", value: 200, type: "top_1" },
        { name: "新行政处罚", value: 0, type: "top_1" },
        { name: "国家校验不合规", value: 0, type: "top_1" },
        { name: "省级校验不合规", value: 100, type: "top_2" },
        { name: "新行政许可", value: 200000, type: "top_2" },
        { name: "国家校验不合规", value: 500, type: "top_2" },
        { name: "浙江迟报", value: 0, type: "top_2" },
      ];
      let result = [];
      arr.map((item) => {
        const isFindIndex = result.findIndex(
          (child) => child.name === item.name
        );
        let num = item.type.split("_");
        num = num[1];
        num = "number" + num;
        if (isFindIndex > -1) {
          result[isFindIndex][num] = item.value;
        } else {
          const newObj = { name: item.name, number1: 0, number2: 0 };
          newObj[num] = item.value;
          result.push(newObj);
        }
      });

      console.log("result", result);
    </script>
  </body>
</html>

1,首先,定义一个空数组,作为处理之后的数组endArr
2,对原数组arr进行循环,arr.forEach,每一项为item
3,在2的循环里面定义一个flag = false,并且endArr.forEach,每一项为items
4,在3的循环里面判断item与items的name是否相同,如果相同,则新加一个属性,为prop = "number" + item.type.slice(-1),然后items[prop] = item.value,并且flag = true
5,在end.forEach结束以后,判断flag,如果为true,说明end拥有相同name,否则就新加属性prop = "number" + item.type.slice(-1),然后直接把{name:item.name,[prop]:item.value} push到endArr里面
6,最后得出来的endArr即最终处理的数组