Удалить дубликаты вложенных объектов в массиве, используя Lodash - PullRequest
0 голосов
/ 05 января 2019

У меня есть массив, который выглядит как ниже

var nestedArray = [
  { id: 1, filter: { type: "nestedArray", name: "5" } },
  { id: 2, filter: { type: "nestedArray1", name: "6" } },
  { id: 3, filter: { type: "nestedArray", name: "5" } }
];

Теперь у меня есть дубликат объекта, я просто хочу идентифицировать дубликаты, используя метод Lodash . Любая помощь приветствуется.

Уже пробовали map , опции фильтра, но нужно что-то в Lodash метод.

Ответы [ 2 ]

0 голосов
/ 06 января 2019

То есть вы хотите отклонить дубликаты по значению в ключе фильтра?

_.uniqWith(nestedArray, (x, y) => _.isEqual(x.filter, y.filter), myArray)

Если у вас есть возможность использовать Ramda вместо этого, это может быть более лаконично, потому что все функции автоматически каррируются

const rejectDuplicateFilter = R.uniqWith(R.eqProps('filter'));
rejectDuplicateFilter(myArray)
0 голосов
/ 05 января 2019

Вы можете использовать отклонение с Свойством.

var myArray = [
  {
    "id": 1,
    "filter": {
      "type": "nestedArray",
      "name": "5"
    }
  },
  {
    "id": 2,
    "filter": {
      "type": "nestedArray1",
      "name": "6"
    }
  },
  {
    "id": 3,
    "filter": {
      "type": "nestedArray",
      "name": "5"
    }
  }
];

var result = _.reject(myArray, ['filter.name', '5']);

console.log(result);
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.11/lodash.min.js"></script>
...