JS如何把上面这种数据类型转换成下面这种的


 regionList: [
          {
            detailList: [
             {
                subjectName: "数学",
                times: 2,
              },
              {
                subjectName: "语文",
                times: 1,
              },
          
            ],
            regionName: "雁塔", //区域
          },
          {
            detailList: [
              {
                subjectName: "语文",
                times: 8,
              },
              {
                subjectName: "数学",
                times: 9,
              },
            ],
            regionName: "长安", //区域
          },
        ],

如何把上面这种数据类型转换成下面这种的


[{
      area: '雁塔',
      language: 1,//语文
      mathematics: 2,//数学
    },
    {
      area: '长安',
      mathematics: 9,//数学
      language: 8,//语文
    }]
data = [
    {
        detailList: [
            {
                subjectName: "语文",
                times: 1,
            },
            {
                subjectName: "数学",
                times: 2,
            },
        ],
        regionName: "雁塔", //区域
    },
    {
        detailList: [
            {
                subjectName: "语文",
                times: 8,
            },
            {
                subjectName: "数学",
                times: 9,
            },
        ],
        regionName: "长安", //区域
    },
]

function changeData(baseDir, data) {
    return data.map(item => ({
        area: item.regionName,
        ...Object.keys(baseDir).reduce((t, i) => {
            t[i] = item.detailList.find(i2 => i2.subjectName === baseDir[i]).times
            return t
        }, {})
    }));
}

console.log(changeData({
    language: '语文',
    mathematics: '数学'
}, data))

这篇博文的方法,对你的数据转化应该有帮助:js 数据类型转换 常见转化,链接:https://blog.csdn.net/H291850336/article/details/109306437

这是JS对象转化啊!
你直接遍历,按要求变更就行了

遍历json,再重新按照要求生成新json

1楼这个可以,跟我的差不多,我就不写了