当前位置:  开发笔记 > 编程语言 > 正文

删除数组中的重复对象

如何解决《删除数组中的重复对象》经验,为你挑选了1个好方法。



1> Luca Angelet..:

我将建议2个解决方案.

这两种方法都需要PostHashable和Equatable

使帖子符合Hashable和Equatable

在这里,我假设您的Poststruct(或类)具有id类型的属性String.

struct Post: Hashable, Equatable {
    let id: String
    var hashValue: Int { get { return id.hashValue } }
}

func ==(left:Post, right:Post) -> Bool {
    return left.id == right.id
}

解决方案1(丢失原始订单)

要删除重复,您可以使用 Set

let uniquePosts = Array(Set(posts))

解决方案2(保留订单)

var alreadyThere = Set()
let uniquePosts = posts.flatMap { (post) -> Post? in
    guard !alreadyThere.contains(post) else { return nil }
    alreadyThere.insert(post)
    return post
}

推荐阅读
乐韵答题
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有