Skip to main content
5 of 10
deleted 3 characters in body

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

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('*')
    const parent = acc.find(e => e.objectid === objectid)
    const child = { isdelete: "1", contactid, associationid }
    
  if (globalLkupRemoveContactReviewer.find((item2) => 
    item2.userid === contactid)) return acc
  
  if (parent) parent.contacts.push(child)
  else acc.push({objectid,contacts: [child]})
  
  return acc
  }, [])
console.log(JSON.stringify(data, null, 2))

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