我有一系列的字典:
var eventDetailsArray = [[String: String]]()
var events: [String: String] = ["name":"block A”, "date":"Friday, 23 Nov 2018"]
var events1: [String: String] = ["name":"block AB”, "date":"Friday, 23 Nov 2018"]
var events2: [String: String] = ["name":"block B", "date":"Tuesday, 13 Nov 2018"]
var events3: [String: String] = ["name":"block C", "date":"Wednesday, 28 Nov 2018"]
eventDetailsArray.append(events)
eventDetailsArray.append(events1)
eventDetailsArray.append(events2)
eventDetailsArray.append(events3)
var eventNamesArray = [String]()
我想要一个仅具有选定日期的事件名称的输出数组。 例如;如果选择了“ 2018年11月23日星期五”,则应该在SWIFT的输出数组中获得“ block A”和“ AB AB”
答案 0 :(得分:3)
您可以这样做:
let str = "Friday, 23 Nov 2018"
eventNamesArray = eventDetailsArray.compactMap { $0["date"] == str ? $0["name"] : nil }
结果是:
print(eventNamesArray) //["block A", "block AB"]
答案 1 :(得分:0)
只需使用filter
方法:
var eventNamesArray = eventDetailsArray.filter { $0["date"] == "Friday, 23 Nov 2018" }
也许您还应该考虑使用Date
而不是字符串来表示日期。特别是,如果您有兴趣支持不同的语言/地区。