Как получить уникальный объект из двух списков <Map>? - PullRequest
0 голосов
/ 27 января 2020

У меня есть два списка, который является типом карты. Как я могу получить уникальные объекты из обоих массивов?

List<Map> arr = [ {"id": "1", "name": "Apple"}, {"id": "2", "name": "Banana"}, {"id": "3", "name": "Cake"}, {"id": "4", "name": "Dog"} ]; 
List<Map> arr1 = [ {"id": "1", "name": "Apple"}, {"id": "2", "name": "Boy"}, {"id": "3", "name": "Cow"}, {"id": "4", "name": "Dog"} ]; 

вывод должен быть таким:

List<Map> arr3 = [ {"id": "2", "name": "Banana"}, {"id": "3", "name": "Cake"}, {"id": "2", "name": "Boy"}, {"id": "3", "name": "Cow"} ];

1 Ответ

0 голосов
/ 27 января 2020

Вы можете использовать это:

List<Map> getUniq(List<Map> arr1, List<Map> arr2) {
  List<Map> res = [];
  for (var el1 in arr1)
    for (var el2 in arr2)
      if (el1['id'] == el2['id'] && el1['name'] != el2['name'])
        res.addAll([el1, el2]);
  return res;
}

В вашем случае:

List<Map> arr3 = getUniq(arr, arr1);
// outputs [{id: 2, name: Banana}, {id: 2, name: Boy}, {id: 3, name: Cake}, {id: 3, name: Cow}]

Как вы можете видеть, он возвращает только элементы с одинаковыми id, но разными name.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...