Swift中如何基于title键从两个数组获取唯一记录?
Swift中基于title键获取两个数组的唯一记录
你需要筛选出仅在其中一个数组中出现的title对应的完整字典,排除在两个数组中都存在的title(无论其他字段值是否不同),可以通过以下步骤实现:
步骤1:定义输入数组
明确输入数据类型(Swift中建议显式声明类型,避免歧义):
let arr1: [[String: String]] = [ ["title" : "News", "icon" : "news_1"], ["title" : "Food", "icon" : "food_1"] ] let arr2: [[String: String]] = [ ["title" : "News", "icon" : "news_2"], ["title" : "Technology", "icon" : "tech_1"] ]
步骤2:统计每个title的出现次数
合并两个数组的所有title,统计每个title在整体中的出现次数:
// 提取所有有效title(避免字典无title键的情况) let allTitles = arr1.compactMap { $0["title"] } + arr2.compactMap { $0["title"] } // 用reduce统计次数(Swift风格的简洁写法) let titleCount = allTitles.reduce(into: [String: Int]()) { counts, title in counts[title, default: 0] += 1 }
步骤3:筛选出唯一记录
合并原数组,筛选出title出现次数为1的元素:
let arr3 = (arr1 + arr2).filter { item in guard let title = item["title"] else { return false } return titleCount[title] == 1 }
验证结果
打印arr3会得到你期望的结果:
print(arr3) // 输出:[["title": "Food", "icon": "food_1"], ["title": "Technology", "icon": "tech_1"]]
内容的提问来源于stack exchange,提问作者Hemant Garg
相关产品推荐
相关产品推荐

