I have two list of objects
List1: TotalEmployers-
[{EmployerId: 1,Name:"Rick", Checked :false}, {EmployerId: 2,Name:"John", Checked :false},{EmployerId: 3,Name:"Maddy", Checked :false}]
List2: UpdatedEmployer
[{EmployerId: 1,Name:"Rick"},{EmployerId: 2,Name:"John"}]
How to update list1 checked value to true based on records in list2
Final output :
List1: TotalEmployers-
[{EmployerId: 1,Name:"Rick", Checked :true}, {EmployerId: 2,Name:"John", Checked :true},{EmployerId: 3,Name:"Maddy", Checked :false}]
I have two list of objects
List1: TotalEmployers-
[{EmployerId: 1,Name:"Rick", Checked :false}, {EmployerId: 2,Name:"John", Checked :false},{EmployerId: 3,Name:"Maddy", Checked :false}]
List2: UpdatedEmployer
[{EmployerId: 1,Name:"Rick"},{EmployerId: 2,Name:"John"}]
How to update list1 checked value to true based on records in list2
Final output :
List1: TotalEmployers-
[{EmployerId: 1,Name:"Rick", Checked :true}, {EmployerId: 2,Name:"John", Checked :true},{EmployerId: 3,Name:"Maddy", Checked :false}]
Share
Improve this question
edited Nov 10, 2018 at 12:20
Guerric P
31.9k6 gold badges58 silver badges106 bronze badges
asked Nov 6, 2018 at 14:58
priya_21priya_21
1591 gold badge2 silver badges15 bronze badges
5 Answers
Reset to default 4This might be the most pact code:
TotalEmployers.forEach(x => {
x.Checked = UpdatedEmployer.some(y => y.EmployerId === x.EmployerId);
});
Try map operator:
TotalEmployers.map(employee=> {
return employee.Checked = UpdatedEmployer.some(cobay => cobay.EmployerId=== employee.EmployerId);
});
Here is a snippet for your case :
TotalEmployers = [{EmployerId: 1,Name:"Rick", Checked :false}, {EmployerId: 2,Name:"John", Checked :false},{EmployerId: 3,Name:"Maddy", Checked :false}];
UpdatedEmployer = [{EmployerId: 1,Name:"Rick"},{EmployerId: 2,Name:"John"}];
TotalEmployers.map(employee=> {
return employee.Checked = UpdatedEmployer.some(cobay => cobay.EmployerId=== employee.EmployerId);
});
console.log(TotalEmployers);
Loop through your TotalEmployers
, if an employee in UpdatedEmployer
contains the id, set to true or false by some
method
TotalEmployers.forEach(function(employee)
{
employee.checked = UpdatedEmployer.some(function (item) {
return item.EmployerId == employee.EmployerId;
});
})
you can use the Array.prototype.map to iterate over the array. As you can see in the documentation, it returns a new array with modifications applied on each elements as per the callback function passed to it.
TotalEmployers = TotalEmployers.map(e => {
e.Checked = UpdatedEmployer.some(cobay => cobay.id === e.id);
});
Another solution using Sets in javascript
const updatedEmployersSet = new Set(UpdatedEmployers.map(e => e.EmployerId));
TotalEmployers.forEach(e => e.Checked = updatedEmployersSet.has(e.EmployerId))