Swift 对象数组去重

使用 reduce 方法去重

使用 reduce 方法结合 contains 方法可以实现去重。reduce 方法用于将数组的元素进行累积计算,而 contains 方法用于检查元素是否已经存在于结果数组中。

Swift 复制代码
struct SearchRecord: Equatable {
    let id: Int
    let name: String
}

let records = [
    SearchRecord(id: 1, name: "Record 1"),
    SearchRecord(id: 2, name: "Record 2"),
    SearchRecord(id: 1, name: "Record 1"),
    SearchRecord(id: 3, name: "Record 3")
]

let uniqueRecords = records.reduce([]) { result, element in
    return result.contains(element) ? result : result + [element]
}

print(uniqueRecords)

在上面的代码中,我们为 SearchRecord 结构体添加了 Equatable 协议,并实现了相等性比较。然后,我们使用 reduce 方法进行去重操作。如果结果数组 result 中已经包含了当前元素 element,则直接返回结果数组;否则将当前元素追加到结果数组中。

注意,对于自定义对象类型,你需要根据实际情况实现 Equatable 协议中的 == 操作符来定义对象相等的逻辑。

相关推荐
六元七角八分几秒前
CSDN文章如何转出为PDF文件保存
开发语言·javascript·pdf
froginwe118 分钟前
MongoDB 删除数据库
开发语言
Java小混子9 分钟前
golang项目CRUD示例
开发语言·后端·golang
想搞艺术的程序员12 分钟前
Go 优雅关闭实践指南:从原理到框架落地
开发语言·后端·golang
m5655bj16 分钟前
Python 查找并高亮显示指定 Excel 数据
开发语言·python·excel
无泊里36 分钟前
linux:系统用户命令
linux·运维·服务器
洛克希德马丁39 分钟前
Qt 配置Webassemble环境
开发语言·qt·webassembly·emscripten·emsdk
武子康39 分钟前
Java-167 Neo4j CQL 实战:CREATE/MATCH 与关系建模速通 案例实测
java·开发语言·数据库·python·sql·nosql·neo4j
自由的好好干活42 分钟前
C#桌面框架与Qt对比及选型(国产操作系统开发视角)
开发语言·qt·c#
upward_tomato1 小时前
python中模拟浏览器操作之playwright使用说明以及打包浏览器驱动问题
开发语言·python