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

相关推荐
Data_agent2 分钟前
1688获得1688公司档案信息API,python请求示例
开发语言·数据库·python
南棱笑笑生8 分钟前
20251129给荣品RD-RK3588开发板跑Rockchip的原厂Buildroot【linux-6.1】系统时适配AP6275P的蓝牙BLE
linux·运维·服务器·rockchip
qq_3363139310 分钟前
java基础-排序算法
java·开发语言·排序算法
周杰伦fans20 分钟前
C#中OrderByDescending 是LINQ扩展方法之一
开发语言·c#·linq
李绍熹39 分钟前
Lua 语言基础教程
开发语言·junit·lua
周杰伦fans43 分钟前
C# 中 SQL Server 数据库调优指南(小白友好版)
开发语言·数据库·c#
1***y1781 小时前
PHP在微服务中的微服务开发
开发语言·微服务·php
小鹿学程序1 小时前
02-集群节点准备:克隆虚拟机
linux·服务器·apache
大吱佬1 小时前
GO 八股整理(自用)
开发语言·后端·golang
froginwe112 小时前
Go 语言结构体
开发语言