Сравните два списка и обновите одно значение списка другим angular5 - PullRequest
0 голосов
/ 06 ноября 2018

У меня есть два списка объектов

List1: TotalEmployers-

 [{EmployerId: 1,Name:"Rick", Checked :false}, {EmployerId: 2,Name:"John", Checked :false},{EmployerId: 3,Name:"Maddy", Checked :false}]

List2: ОбновленоEmployer

[{EmployerId: 1,Name:"Rick"},{EmployerId: 2,Name:"John"}]

Как обновить проверенное значение list1 на true, основываясь на записях в list2

Окончательный вывод:

List1: TotalEmployers-

[{EmployerId: 1,Name:"Rick", Checked :true}, {EmployerId: 2,Name:"John", Checked :true},{EmployerId: 3,Name:"Maddy", Checked :false}]

Ответы [ 5 ]

0 голосов
/ 06 ноября 2018

Другое решение, использующее наборы в javascript

const updatedEmployersSet = new Set(UpdatedEmployers.map(e => e.EmployerId));

TotalEmployers.forEach(e => e.Checked = updatedEmployersSet.has(e.EmployerId))
0 голосов
/ 06 ноября 2018

вы можете использовать Array.prototype.map для перебора массива. Как видно из документации, он возвращает новый массив с изменениями, примененными к каждому элементу в соответствии с переданной ему функцией обратного вызова.

TotalEmployers = TotalEmployers.map(e => {
   e.Checked = UpdatedEmployer.some(cobay => cobay.id === e.id);
});
0 голосов
/ 06 ноября 2018

Просмотрите ваш TotalEmployers, если сотрудник в UpdatedEmployer содержит идентификатор, установленный в true или false по some method

TotalEmployers.forEach(function(employee)
{        
    employee.checked = UpdatedEmployer.some(function (item) {
           return item.EmployerId == employee.EmployerId;
       });

})
0 голосов
/ 06 ноября 2018

Попробуйте карта оператор:

TotalEmployers.map(employee=> {
   return employee.Checked = UpdatedEmployer.some(cobay => cobay.EmployerId=== employee.EmployerId);
});

Вот фрагмент для вашего случая:

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);
0 голосов
/ 06 ноября 2018

Это может быть самый компактный код:

TotalEmployers.forEach(x => {
   x.Checked = UpdatedEmployer.some(y => y.EmployerId === x.EmployerId);
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...