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

相关推荐
机灵猫21 分钟前
java锁:从 Mark Word 锁升级到 AQS
java·开发语言
TH_122 分钟前
腾讯云-(1)-轻量级服务器购买
服务器·云计算·腾讯云
山卡拉噶1 小时前
在Linux中安装Kdump调试环境
linux·运维·服务器
扶尔魔ocy1 小时前
【QT opencv】手动去噪--网格化获取区域坐标
开发语言·qt·opencv
程序员与背包客_CoderZ1 小时前
C/C++版LLM推理框架Llama.cpp——入门与编码实战
c语言·开发语言·网络·c++·人工智能·语言模型·llama
喵了几个咪1 小时前
C++ IDE:最适合 C++ 初学者的 IDE 是什么?
开发语言·c++·ide
梅梅绵绵冰2 小时前
springmvc文件上传
java·开发语言
TT哇2 小时前
【计算机网络】经典易错题 1.概述 2 物理层 3.数据链路层 4.网络层
android·服务器·计算机网络
Hat_man_2 小时前
虚拟机Ubuntu22.04交叉编译Qt5.15.2(ARM64)
开发语言·qt
Boop_wu2 小时前
[Java 面试] 多线程1
java·开发语言