删除字典数组中重复的月份和年份,然后根据年份和月份将其保存到另一个数组中-Swift iOS



我有一个字典数组var year_month=[String:Any],我将用年-月来附加每日销售数据。这是附加数据后的数组

[["year": "2019", "month": "July"], ["year": "2019", "month": "July"], "month": "July"], ["month": "July", "year": "2019"], ["month": "July", "year": "2019"], ["month": "July", "year": "2019"], ["year": "2019", "month": "July"], ["year": "2019", "month": "August"], ["month": "August", "year": "2019"], ["year": "2019", "month": "August"],["year": "2020", "month": "July"], ["year": "2020", "month": "July"], "month": "July"], ["month": "July", "year": "2020"], ["month": "July", "year": "2020"], ["month": "July", "year": "2020"], ["year": "2020", "month": "July"], ["year": "2020", "month": "August"], ["month": "August", "year": "2020"], ["year": "2020", "month": "August"]]

那么我需要将其存储在另一个数组中,如下所示var final_year_month=Dictionary<字符串,任意>像这个

final_year_month.append(["year" : "2019", "value" : ["January","February","March","April","May","June","July","August","September","October","November","December"],
["year" : "2020", "value" : ["January","February","March","April","May","June","July","August","September","October","November","December"]]) 

如何删除重复的年份和月份,并按年份添加所有月份提前谢谢。

给定这样的数据集:

let dataSet = [["year": "2020", "month": "January"], ["year": "2020", "month": "February"], ["year": "2019", "month": "March"], ["year": "2019", "month": "April"]]

按年份对数据集进行分组:

let yearAndMonthGroupedByYear = Dictionary(grouping: dataSet) { yearAndMonth -> String? in
return yearAndMonth["year"]
}

这给了我们:

[Optional("2020"): [["year": "2020", "month": "January"], ["year": "2020", "month": "February"]], Optional("2019"): [["year": "2019", "month": "March"], ["month": "April", "year": "2019"]]]

对于每组,我们希望

  1. 提取该年对应的年份和月份
  2. 消除重复月份
  3. 返回一个由一年和一组唯一月份组成的字典

如此:

let result = yearAndMonthGroupedByYear.compactMap { year, yearAndMonthArray -> [String: Any]? in
guard let year = year else { return nil }
let months = yearAndMonthArray.compactMap { $0["month"] }
let uniqueMonths = Set(months)
let arrayOfUniqueMonths = Array(uniqueMonths)
return ["year": year, "value": arrayOfUniqueMonths]
}

这给了我们:

[["year": "2020", "value": ["January", "February"]], ["value": ["March", "April"], "year": "2019"]]

最新更新