一一填充时删除数组中的重复对象

时间:2019-05-18 18:03:02

标签: javascript arrays object

我有一个对象数组,其中一些对象是相同的(重复的)。 在.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 个答案:

答案 0 :(得分:2)

您可以使用Set数据结构。只需通过传递数组来创建一个新的Set,它将自动删除重复项

let set1 = new Set(yourArray)

有关更多信息,请参见documentation

答案 1 :(得分:1)

如果无法使用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);