If I understand everything correctly, then this can be done easier. The code can be formatted in different ways. But the main thing is that there is less action. So:
- we split the data into parts
- then through reduce we form a common array of objects
- parse data for object (including `objectid`)
- check `globalLkupRemoveContactReviewer` if we should add something
- to save space, we form a `child` object once
- if we have an object with this `objectid` - update it otherwise create it

<!-- begin snippet: js hide: false console: true babel: false -->

<!-- language: lang-js -->

    const globalLkupRemoveContactReviewer = [
      { objectid: 555, userid: '1', associationid: '1948874' },
      { objectid: 555, userid: '2', associationid: '1950833' },
    ];

    const myStr = '111*1*1968397,222*1*1968398,222*2*1968399,333*2*1968401,333*4*1968402,333*1*19684034';
    const data = myStr.split(',')
      .reduce((acc, e) => {
        const [objectid, contactid, associationid] = e.split('*')
        if (!globalLkupRemoveContactReviewer.find((item2) => 
          item2.userid === contactid)) return acc   // skip 

        const parent = acc.find(e => e.objectid === objectid)
        const child = { isdelete: "1", contactid, associationid	}
    	  if (parent) {
          parent.contacts.push(child)     // append contact
        } else {
          acc.push({objectid,contacts: [child]}) // new object
        }
        return acc
      }, [])
    console.log(JSON.stringify(data, null, 2))

<!-- end snippet -->

As a result, we do not have unnecessary actions and operations.