Удалить дубликат объекта в массиве при заполнении по одному - PullRequest
1 голос
/ 18 мая 2019

У меня есть массив объектов, некоторые из которых одинаковы (дубликаты). в цикле .forEach (). внутри функции обратного вызова я хочу удалить дублирующийся объект, когда они входят в другой массив один за другим. я пытался зациклить каждую итерацию в массиве, чтобы найти и удалить дубликаты, но по какой-то причине я не могу его получить.

Я попытался сделать петлю и нарезать дубликат. Я не могу сделать функцию. Я не могу получить весь массив и обработать дубликаты.

.forEach(function(snap){

groupsJoin.push({groupId: snap)}

groupsJoin.sort((a, b) => (a.groupId > b.groupId) ? -1 : 1)

for (z=1; z<groupsJoin.length; z++) {
     if (groupsJoin[z-1].groupId === groupsJoin[z].groupId) {
         groupsJoin = groupsJoin.slice(0, z)
     }



...Object.assign({}, groupsJoin)
}

Ответы [ 2 ]

2 голосов
/ 18 мая 2019

Вы можете использовать структуру данных Set.Просто создайте новый набор, передав массив, и он автоматически удалит дубликаты

let set1 = new Set(yourArray)

Для получения дополнительной информации см. Документацию

1 голос
/ 18 мая 2019

Если вы не можете использовать new Set(groupsJoin) для фильтрации всех сразу, обратитесь к следующему решению:

var groupsJoin = new Set(); 
arr.forEach(x => groupsJoin.add(x))

В результате вы получите массив с уникальными значениями. если необходимо хранить карты внутри, вместо x используйте

x.groupId => groupsJoin.add(x.groupId)

Это будет зависеть от вашего контекста.

var arr = [1, 2, 4, 5, 5, 4, 3, 9, 8, 11, 1];

var groupsJoin = new Set();
arr.forEach( x => groupsJoin.add(x));

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