数组元素查重,帅选出重复的数据
type person struct {
name, id_card_no string
}
func familyHasSamePerson(nodeViewList []*person)([]person) {
nodeMap := make([]person, 0)
pList := make([]person, 0)
for _,node := range nodeViewList {
if !dbdefault.IsStringNullOrEmpty(node.id_card_no){
nodeMap = append(nodeMap,person{node.name , node.id_card_no,})
}
}
sort.SliceStable(nodeMap, func(i, j int) bool {
return nodeMap[i].name+nodeMap[i].id_card_no > nodeMap[j].name+nodeMap[j].id_card_no
})
nextPos := 0
for i := range nodeMap {
if i == len(nodeMap)-1 {
if nextPos > 0 {
pList = append(pList, nodeMap[nextPos])
}
return pList
}
equalFlag := false
if nodeMap[i].name+nodeMap[i].id_card_no == nodeMap[i+1].name+nodeMap[i+1].id_card_no {
equalFlag = true
nextPos = i+1
pList = append(pList, nodeMap[i])
}
if !equalFlag && nextPos > 0 {
pList = append(pList, nodeMap[nextPos])
nextPos = 0
}
}
return pList
}