I have two arrays of objects
    let current = [
        {
            categoryId: 18,
            id: 'fire_18',
            test: 'test'
        }, {
            oldItem: "items that dont exist in new array should be deleted"
        }
    ]
    let new_data = [
        {
            id: 'fire_18',
            categoryId: 18,
            test1: 'test1',
        }, {
            newItem: "new items should be added to final"
        }
    ]
I need to merge those so the result is not missing data from current array. The desired result looks like this
    [
        {
            id: 'fire_18',
            categoryId: 18,
            test1: 'test1',
            test: 'test'
        }, {
            newItem: "new items should be added to final"
        }
    ]
Here is my attempt
let current = [
    {
        categoryId: 18,
        id: 'fire_18',
        test: 'test'
    }, {
        oldItem: "items that dont exist in new array should be deleted"
    }
]
let new_data = [
    {
        id: 'fire_18',
        categoryId: 18,
        test1: 'test1',
    }, {
        newItem: "new items should be added to final"
    }
]
console.log(' === Current ==>', current);
console.log(' === New ==>', new_data);
new_data.map(newItem => {
    let currentMatch;
    try { // incase new item newItem.categoryId wont exist
        currentMatch = current.find(c => c.categoryId == newItem.categoryId) || {};
    } catch (error) { // in that case, no need to merge
        currentMatch = {};
    }
    return Object.assign(currentMatch, newItem);
});
console.log(' === Merged ==>', new_data);the main thing wrong still is test key from the current arr is missing after merge. 
Can anyone modify the pen to not delete keys from the current arr?
 
     
     
     
     
    