charan tej
charan tej

Reputation: 1054

How to compare and push field to sub array in object

I have an object which contain name and id. Second object has some fields and that id field from first object.

For Example:

FirstObj = [{
  _id: '48765465f42424',
  Name : 'Sample'
},{
  _id: '48765465f654654',
  Name : 'Sample1'
}]
secondObj = [{
  Field1 : 5464,
  subarray : [{
        Field2 : 14654,
        Field3 : { IsActive : true,
                     FirstObjid : '48765465f42424'
                  },
        Field4 : { IsActive : true,
                     FirstObjid : '48765465f654654'
                  }
            }]
    },
    {
  Field1 : 2145,
  subarray : [{
        Field2 : 544644,
        Field3 : { IsActive : true,
                     FirstObjid : '48765465f654654'
                  },
        Field4 : { IsActive : true,
                     FirstObjid : '48765465f42424'
                  },
        }]
    }]

Now I need to compare both and push that name from first object to secondobj's subobj beside FirstObjid field .

Expected Output is :

 secondObj = [{
  Field1 : 5464,
  subarray : [{
        Field2 : 14654,
        Field3 : { IsActive : true,
                     FirstObjid : '48765465f42424',
                    Name : 'Sample'
                  },
        Field4 : { IsActive : true,
                     FirstObjid : '48765465f654654',
                    Name : 'Sample1'
                  }
            }]
    },
    {
  Field1 : 2145,
  subarray : [{
        Field2 : 544644,
        Field3 : { IsActive : true,
                     FirstObjid : '48765465f654654',
                     Name : 'Sample1'
                  },
        Field4 : { IsActive : true,
                     FirstObjid : '48765465f42424',
                    Name : 'Sample'
                  },
        }]
    }]

How can I achieve it.

Upvotes: 0

Views: 180

Answers (2)

Sachila Ranawaka
Sachila Ranawaka

Reputation: 41447

Use map function and compare the object ids like this

var secondObj =  [{
  Field1 : 5464,
  subarray : [{
        Field2 : 14654,
        Field3 : 'sfsadf',
        FirstObjid : '48765465f42424'
        }]
    },
    {
  Field1 : 2145,
  subarray : [{
        Field2 : 544644,
        Field3 : 'awrfsa',
        FirstObjid : '48765465f654654'
        }]
    }]
    
 var FirstObj = [{
  _id: '48765465f42424',
  Name : 'Sample'
},{
  _id: '48765465f654654',
  Name : 'Sample1'
}]

secondObj.subarray = secondObj.map(o => o.subarray.map(k=> FirstObj.map(l=> { 
  if(l._id == k.FirstObjid){
     k.Name = l.Name
  }
  return o;
})))
 

console.log(secondObj)
 

Upvotes: 0

Nair Athul
Nair Athul

Reputation: 821

Try this

secondObj.subarray.forEach(function(item){
if(item.FirstObjid==FirstObj._id)
    item.Name = FirstObj.Name
})

Upvotes: 4

Related Questions