Search code examples
javascriptarraysobjectecmascript-6lodash

Update an array of objects using another array


i need to update the array of objects based on another array in ES6. Example

let a = [ 
  { id : 23, active :false, status:"" },
  { id : 33, active :false, status:"" },
  { id : 167, active :false, status:"" },
  { id : 18, active :false, status:"" },
  { id : 200, active :false, status:"" },
]

my second array which contain the objects

let marked = [167,33,23];

expected results as below

let a = [ 
  { id : 23, active :true, status:"updated"},
  { id : 33, active :true, status:"updated" },
  { id : 167, active :true, status:"updated" },
  { id : 18, active :false, status:"" },
  { id : 200, active :false, status:"" },
]

please let me know how to get as expected result. do we have any other methods in lodash for this.?


Solution

  • This is really just an extension of @Giorgi Moniava's answer since the question has been updated. I think you should mark his answer as the accepted one. Basically all you need to do is check if the value for active is true or false. If it's true, set the status to updated otherwise, set the status to an empty string.

    let a = [ 
      { id : 23, active :false, status:"" },
      { id : 33, active :false, status:"" },
      { id : 167, active :false, status:"" },
      { id : 18, active :false, status:"" },
      { id : 200, active :false, status:"" },
    ]
    
    let marked = [167,33,23];
    
    let result = a.map(obj => {
        const isActive = marked.includes(obj.id);
        const status = isActive ? 'updated' : '';
        return {
          ...obj,
          active: isActive,
          status: status
        }
    })
    console.log(result)