最近,在做一个根据角色展示所属的建筑列表,因为某个用户可以同时有多个角色,而每个角色又可以分别管理不同的建筑,所以在实际开发中出现,一个用户登录之后,会根据角色来展示一个建筑列表,所以就会出现重复的建筑出现,所以需要对结果数组进行去重.
func ArrayDup(items []vo.VoBuilding) []vo.VoBuilding {
result := make([]vo.VoBuilding, 0)
temp := map[int64]interface{}{}
for _, item := range items {
buildingId := item.BuildingId
value := temp[*buildingId]
temp[*buildingId] = item
if value == nil {
result = append(result, item)
}
}
return result
}
基本思路:
1.重新定义一个切片
2.定义一个map
3. 遍历传来的数组,从中获取建筑对应的id ,根据这个id去map里面查,如果有值我们就不放到新切片中去,没有 就放进去,这样就可以达到去重的效果.