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. 使用Dictionaryreduce方法简化代码

let classifiedPeople = people.reduce(into: [:]) { result, person in
    result[person.age, default: []].append(person)
}
print(classifiedPeople) // 输出同上

4. 使用filtermap组合进行分类(适用于简单场景)

let youngPeople = people.filter { $0.age < 30 } // 获取年龄小于30的人
print(youngPeople) // 输出年龄小于30的人的列表

  

posted @ 2025-05-03 11:59  哇哈爽  阅读(43)  评论(0)    收藏  举报