admin 管理员组文章数量: 1086019
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))
本文标签: javascriptCompare two lists and update value one list value to other angular5Stack Overflow
版权声明:本文标题:javascript - Compare two lists and update value one list value to other angular5 - Stack Overflow 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://roclinux.cn/p/1743997864a2515905.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论