Удалить дубликаты объектов из массива, всегда возвращающего n-й индекс - PullRequest
0 голосов
/ 29 июня 2018

Есть ли способ удалить дубликаты, убедившись, что n-й индекс всегда оставлен. Так что, если у меня есть

[{name: "john", age:20},{name:"john", age:30}]

Мне нужно, чтобы результат всегда был

[{name:"john",age:30}]

В настоящее время я использую этот метод удаления дубликатов

  PICKER.saveSelection = PICKER.saveSelection.filter((select, index, self) => {
 return self.map(function(mapItem){ return mapItem["category"]; }).indexOf(select["category"]) === index;});

1 Ответ

0 голосов
/ 29 июня 2018

Вы можете использовать reduce и сгруппировать массив в объект, используя имя в качестве ключа. Используйте Object.values для преобразования объекта обратно в массив.

var arr = [
      {name: "john", age:20},
      {name:"john", age:30},
      {name:"adam", age:30},
      {name:"eddie", age:27}
];

var result = Object.values(arr.reduce((c, v) => Object.assign(c, {[v.name]: v}), {}));

console.log(result);
...