Скажем, у меня есть 2 массива экземпляров класса «Человек». У класса Person есть свойства «имя», «возраст», «id». «id» - уникальный идентификатор, поэтому его можно использовать для сравнения людей. Так, скажем, у меня есть два массива людей:Вычитание двух массивов объектов на основе свойств объектов
[ {Name: Bob,Age: 18,ID: 142353}, {Name: Rob, Age: 40,ID: 142350}, {Name: Andy, Age: 30,ID: 142359}, {Name: Andy, Age: 21,ID: 142340} ]
[ {Name: Jack,Age: 18,ID: 142362}, {Name: James, Age: 40,ID: 142311}, {Name: Rob, Age: 40,ID: 142350}, {Name: Andy, Age: 21,ID: 142340} ]
Я хочу, чтобы сравнить идентификаторы людей и получить те, которые отличаются в массиве 1 из что в массиве 2, поэтому результат должен выглядеть следующим образом:
[{Name: Bob,Age: 18,ID: 142353}, {Name: Andy, Age: 30,ID: 142359}]
как я это делаю сейчас в Swift является:
let new = newPeople.filter({ p1 in
previousPeople.contains(where: { p2 in
p1.id != p2.id
})
})
Но я не думаю, что это работает. Не могу понять, что не так с моей реализацией.
Возможные дубликат [Объединить массивы с условием] (http://stackoverflow.com/questions/40263697/merge-arrays-with-condition) – JPetric
'пусть новый = newPeople.filter ({p1 в! PreviousPeople .contains (где: {p2 in p1.id == p2.id})}) – courteouselk
Пожалуйста, используйте синтаксис закрывающего закрытия, чтобы избежать '})' всюду – Alexander