Map Two Arrays Into One

Discussão em 'Angular' iniciado por user8512043, Dezembro 15, 2024.

  1. user8512043

    user8512043 Guest

    I've the following array:

    const arr1 = [
    {"id": 699306, "address": "On earth" },
    {"id": 701298, "address": "On earth" },
    {"id": 701299, "address": "On earth" },
    {"id": 701300, "address": "On earth" }
    ];


    Another array is pretty complex as follows:

    const arr2 = [
    {
    "included": [
    {
    "id": 699306,
    "levelColumn": "CLAIM_DATE",
    "levelColumnName": "Claims",
    "isIncluded": true,
    "tabs": [
    {
    "tabId": 1231,
    "tabName": "Files"
    }
    ],
    "levels": [
    {
    "permValue": "01/01/2021",
    "permName": "01/01/2021"
    },
    {
    "permValue": "01/01/2022",
    "permName": "01/01/2022"
    },
    {
    "permValue": "01/01/2023",
    "permName": "01/01/2023"
    },
    {
    "permValue": "01/01/2024",
    "permName": "01/01/2024"
    },
    {
    "permValue": "01/01/2025",
    "permName": "01/01/2025"
    },
    {
    "permValue": "01/02/2023",
    "permName": "01/02/2023"
    },
    {
    "permValue": "01/02/2024",
    "permName": "01/02/2024"
    },
    {
    "permValue": "01/03/2024",
    "permName": "01/03/2024"
    },
    {
    "permValue": "01/03/2026",
    "permName": "01/03/2026"
    },
    {
    "permValue": "01/04/2022",
    "permName": "01/04/2022"
    },
    {
    "permValue": "01/04/2023",
    "permName": "01/04/2023"
    },
    {
    "permValue": "01/04/2024",
    "permName": "01/04/2024"
    }
    ]
    },
    {
    "id": 701298,
    "levelColumn": "CLAIM_DATE",
    "levelColumnName": "Claims",
    "isIncluded": true,
    "tabs": [
    {
    "tabId": 1231,
    "tabName": "Files"
    }
    ],
    "levels": [
    {
    "permValue": "01/01/2021",
    "permName": "01/01/2021"
    },
    {
    "permValue": "01/01/2022",
    "permName": "01/01/2022"
    }
    ]
    },
    {
    "id": 647298,
    "levelColumn": "SOURCE_FILE_ID",
    "levelColumnName": "Files",
    "isIncluded": true,
    "tabs": [
    {
    "tabId": 1231,
    "tabName": "Files"
    },
    {
    "tabId": 1251,
    "tabName": "Files - noinv"
    }
    ],
    "levels": [
    {
    "permValue": "2028524",
    "permName": "0000841354-LAMB-0303043272-11_17_2023_A_Gold.txt"
    },
    {
    "permValue": "2092815",
    "permName": "0000841354-LAMB-0305232305-051324_A_Gold.txt"
    },
    {
    "permValue": "2093469",
    "permName": "0000841354-LAMB-1135418182-051624_A_Gold.txt"
    },
    {
    "permValue": "2125382",
    "permName": "0000841354-LAMB-303368862-12_12_23_3020_Gold.txt"
    }
    ]
    },
    {
    "id": 699307,
    "levelColumn": "CLAIM_DATE",
    "levelColumnName": "Claims",
    "isIncluded": true,
    "tabs": [
    {
    "tabId": 1231,
    "tabName": "Files"
    }
    ],
    "levels": [
    {
    "permValue": "01/01/2021",
    "permName": "01/01/2021"
    },
    {
    "permValue": "01/01/2022",
    "permName": "01/01/2022"
    },
    {
    "permValue": "01/01/2023",
    "permName": "01/01/2023"
    },
    {
    "permValue": "01/01/2024",
    "permName": "01/01/2024"
    },
    {
    "permValue": "01/01/2025",
    "permName": "01/01/2025"
    },
    {
    "permValue": "01/02/2023",
    "permName": "01/02/2023"
    },
    {
    "permValue": "01/02/2024",
    "permName": "01/02/2024"
    },
    {
    "permValue": "01/03/2024",
    "permName": "01/03/2024"
    },
    {
    "permValue": "01/03/2026",
    "permName": "01/03/2026"
    },
    {
    "permValue": "01/04/2022",
    "permName": "01/04/2022"
    },
    {
    "permValue": "01/04/2023",
    "permName": "01/04/2023"
    },
    {
    "permValue": "01/04/2024",
    "permName": "01/04/2024"
    }
    ]
    },
    {
    "id": 701298,
    "levelColumn": "MSTR_ENTERPRISE_ID",
    "levelColumnName": "Enterprise",
    "isIncluded": true,
    "tabs": [
    {
    "tabId": 1971,
    "tabName": "Users"
    }
    ],
    "levels": [
    {
    "permValue": "23",
    "permName": "Aramark"
    },
    {
    "permValue": "693",
    "permName": "Aryzta"
    }
    ]
    },
    {
    "id": 693298,
    "levelColumn": "E1_APP_USER_ID",
    "levelColumnName": "User",
    "isIncluded": true,
    "tabs": [
    {
    "tabId": 1971,
    "tabName": "Users"
    }
    ],
    "levels": [
    {
    "permValue": "137064",
    "permName": " (tibersoftsmuckers [137064])"
    },
    {
    "permValue": "136184",
    "permName": " QA (tsoceanspray [136184])"
    }
    ]
    },
    {
    "id": 693298,
    "levelColumn": "E1_APP_USER_TYPE",
    "levelColumnName": "User Type",
    "isIncluded": true,
    "tabs": [
    {
    "tabId": 1971,
    "tabName": "Users"
    }
    ],
    "levels": [
    {
    "permValue": "Client",
    "permName": "Client"
    },
    {
    "permValue": "Not Provided",
    "permName": "Not Provided"
    },
    {
    "permValue": "Tibersoft",
    "permName": "Tibersoft"
    }
    ]
    }
    ],
    "excluded": [
    {
    "id": 368302,
    "levelColumn": "E1_APP_USER_ID",
    "levelColumnName": "User",
    "isIncluded": false,
    "tabs": [
    {
    "tabId": 1971,
    "tabName": "Users"
    }
    ],
    "levels": [
    {
    "permValue": "575301",
    "permName": " Kelley Mahowald (kmahowald [575301])"
    },
    {
    "permValue": "134560",
    "permName": " Support (support [134560])"
    },
    {
    "permValue": "135241",
    "permName": " Support (support [135241])"
    },
    {
    "permValue": "138248",
    "permName": " Support (support [138248])"
    },
    {
    "permValue": "136725",
    "permName": " Tibersoftaramark (tibersoftaramark [136725])"
    },
    {
    "permValue": "137705",
    "permName": " Tibersoftjmfg (tibersoftjmfg [137705])"
    },
    {
    "permValue": "138508",
    "permName": " Tibersoftlw (tibersoftlw [138508])"
    },
    {
    "permValue": "139330",
    "permName": " Tibersoftschwans (tibersoftschwans [139330])"
    },
    {
    "permValue": "136726",
    "permName": " Tsconagra (tsaramark [136726])"
    },
    {
    "permValue": "134466",
    "permName": "(abailey [134466])"
    },
    {
    "permValue": "134284",
    "permName": "(afitzgerald [134284])"
    },
    {
    "permValue": "137484",
    "permName": "(c [137484])"
    },
    {
    "permValue": "31346",
    "permName": "(caradp [31346])"
    },
    {
    "permValue": "31658",
    "permName": "(caramarie [31658])"
    }
    ]
    }
    ]
    }
    ]


    So what I want is to merge the two arrays into one as follows:

    const arr1 = [
    {"id": 699306, "address": "On earth", "included": [items from arr2], "excluded": [items from arr2] },
    {"id": 701298, "address": "On earth", "included": [items from arr2], "excluded": [items from arr2] },
    {"id": 701299, "address": "On earth", "included": [], "excluded": [] }, //As there is no matching for these ids
    {"id": 701300, "address": "On earth", "included": [], "excluded": [] }
    ];


    I know, the relationship doesn't look appropriate but this is what I've now. Any way to map them?

    I tried the following but it returns null for both include and exclude object:

    mapArraysById(array1: Item[], array2: Item[]): Item[] {
    const mergedArray: Item[] = [];

    for (let i = 0; i < array1.length; i++) {
    const item1 = array1;
    console.log("id: " + item1.id);

    const item2 = array2.find(item => item.id === item1.id);

    if (item2) {
    console.log("Item 2:");
    console.log(item1 + " " + item2);
    mergedArray.push({ ...item1, ...item2 });
    } else {
    mergedArray.push({ ...item1, included: [], excluded: [] });
    }
    }

    return mergedArray;
    }

    Continue reading...

Compartilhe esta Página