swift数组快速分类/去重的几种方式
1. 使用Dictionary来分类
struct Person {
let name: String
let age: Int
}
let people = [
Person(name: "Alice", age: 25),
Person(name: "Bob", age: 20),
Person(name: "Charlie", age: 25),
Person(name: "David", age: 30)
]
let classifiedPeople = Dictionary(grouping: people, by: { $0.age })
print(classifiedPeople) // 输出: [20: [Person(name: "Bob", age: 20)], 25: [Person(name: "Alice", age: 25), Person(name: "Charlie", age: 25)], 30: [Person(name: "David", age: 30)]]
2. 使用reduce方法进行分类
let classifiedPeople = people.reduce(into: [:]) { result, person in
if let existingPeople = result[person.age] {
result[person.age] = existingPeople + [person]
} else {
result[person.age] = [person]
}
}
print(classifiedPeople) // 输出同上
3. 使用Dictionary的reduce方法简化代码
let classifiedPeople = people.reduce(into: [:]) { result, person in
result[person.age, default: []].append(person)
}
print(classifiedPeople) // 输出同上
4. 使用filter和map组合进行分类(适用于简单场景)
let youngPeople = people.filter { $0.age < 30 } // 获取年龄小于30的人
print(youngPeople) // 输出年龄小于30的人的列表

浙公网安备 33010602011771号