最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

javascript - Compare two lists and update value one list value to other angular5 - Stack Overflow

programmeradmin3浏览0评论

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
Add a ment  | 

5 Answers 5

Reset to default 4

This 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))
发布评论

评论列表(0)

  1. 暂无评论