Swift数组按前缀分割为子数组的技术求助
实现Swift数组按前缀分组
需求说明
将给定Swift数组的元素按斜杠/分割后的前缀作为分组键,后缀作为对应组的元素,最终生成一个[String: [String]]类型的字典。
实现代码
let a = ["origin/a", "origin/b", "origin/c", "remo/a", "remo/d", "remo/c", "next/g"] let groupedDict = a.reduce(into: [String: [String]]()) { result, element in let components = element.components(separatedBy: "/") guard components.count == 2 else { return } let key = components[0] let value = components[1] result[key, default: []].append(value) } // 打印结果 print(groupedDict) // 输出:["origin": ["a", "b", "c"], "remo": ["a", "d", "c"], "next": ["g"]]
代码说明
- 使用
reduce(into:)遍历数组,初始化空字典作为累加容器 - 对每个元素用
components(separatedBy: "/")拆分,仅处理拆分后恰好有两部分的元素 - 通过
result[key, default: []]获取对应键的数组(不存在则自动创建空数组),将后缀元素追加进去 - 最终得到的
groupedDict完全匹配需求中的分组结果
内容的提问来源于stack exchange,提问作者Paul
相关产品推荐
相关产品推荐

