编辑代码

const data = {
    "dangerBaseInfo": {
        "memberPosts": [
            "测试岗位1",
            "测试岗位2"
        ],
        "memberName": "超级管理员",
        "memberId": 1,
        "carInfoList": [
            {
                "carNum": "吉A11111",
                "modes": "1.1项",
                "status": true,
                "dangerRectSignboard": {
                    "a1": 1,
                    "type": 1,
                    "status": true,
                    "memberPosts": [],
                    "memberName": "",
                    "uploadList": [],
                    "metaR1": [],
                    "metaR2": [],
                    "metaR3": []
                },
                "dangerDiamondSignboard": {
                    "a1": 1,
                    "type": 1,
                    "status": true,
                    "memberPosts": [],
                    "memberName": "",
                    "uploadList": [],
                    "metaR1": [],
                    "metaR2": [],
                    "metaR3": []
                }
            },
            {
                "carNum": "吉A22222",
                "modes": "2.1项高压罐式运输",
                "status": true,
                "dangerRectSignboard": {
                    "a1": 2,
                    "a2": 2,
                    "type": 3,
                    "status": true,
                    "memberPosts": [],
                    "memberName": "",
                    "uploadList": [],
                    "metaR1": [],
                    "metaR2": [],
                    "metaR3": []
                },
                "dangerDiamondSignboard": {
                    "a1": 1,
                    "type": 1,
                    "status": true,
                    "memberPosts": [],
                    "memberName": "",
                    "uploadList": [],
                    "metaR1": [],
                    "metaR2": [],
                    "metaR3": []
                }
            }
        ]
    },
    "dangerRectSignboard": {
        "status": false,
        "type": 0,
        "memberPosts": [],
        "memberName": "",
        "uploadList": [],
        "metaR1": [],
        "metaR2": [],
        "metaR3": []
    },
    "dangerDiamondSignboard": {
        "status": false,
        "type": 0,
        "memberPosts": [],
        "memberName": "",
        "uploadList": [],
        "metaR1": [],
        "metaR2": [],
        "metaR3": []
    }
}

function processData(data: any, itemName: string) {
    const baseInfo = data.dangerBaseInfo;
    const cars = baseInfo.carInfoList;
    for (const car of cars) {
        if (car.status) {
            const carNum = car.carNum;
            // 处理项目
            const carSign = car[itemName];
            const outerSign = data[itemName];
            const type = carSign.type;
            const metaKey = `metaR${type}`;
            // 确保外层存在对应的meta数组
            if (!outerSign[metaKey]) {
                outerSign[metaKey] = [];
            }
            outerSign.memberPosts = baseInfo.memberPosts
            outerSign.memberName = baseInfo.memberName
            outerSign.memberId = baseInfo.memberId
            outerSign.status = true
            // 添加车牌号到数组
            outerSign[metaKey].push(carNum);
        }
    }
}

processData(data, 'dangerRectSignboard')
console.log(data)