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 协议中的 == 操作符来定义对象相等的逻辑。

相关推荐
小羊没烦恼!3 天前
初探性能优化——2个月到4小时的性能提升
java·开发语言·windows·算法·c#
虎头金猫3 天前
4K 视频总卡在公网带宽?用 N1 + OpenList 把网盘播放链路重新理顺
运维·服务器·网络·python·容器·beautifulsoup·pandas
伞伞悦读3 天前
【第38期】Python 模块与包详解:import、from、模块搜索路径、包结构和 __init__
开发语言·python
C语言小火车3 天前
C/C++ 为什么需要编译器?
开发语言·c++
霍霍的袁3 天前
【C++】map 和 set 的使用 | 从用法到底层
开发语言·c++·学习·visual studio
孙启超3 天前
【AI开发之Rust】第 11 课:智能指针与内部可变性
开发语言·后端·rust
此生决int3 天前
深入理解C++系列(20)——C++11(下)
开发语言·c++
-梅3 天前
linux(8) 软硬链接
linux·运维·服务器
Wang's Blog3 天前
Java 项目实战: 外卖平台-文件下载与ServletOutputStream回写浏览器
服务器·项目开发
琥珀色糖3 天前
SimlpeHttp
linux·服务器