arrays - 向后浏览字典以查找上次更新值的时间
问题描述
我有一个字典数组,其中有两个感兴趣的键对。一个密钥对是日期,另一个是“投资百分比”,其值经常变化。我想找出上次investpercent
更新的日期。所以,请考虑:
var importedRecords = [
["low": "1.0", "date": "2018-04-25", "objective": "2.0", "savings": "2.0", "high": "2.0", "expenses": "1.0", "investpercent": "3.0"],
["low": "1.0", "date": "2018-05-25", "objective": "2.0", "savings": "2.0", "high": "2.0", "expenses": "1.0", "investpercent": "3.0"],
["low": "1.0", "date": "2018-06-25", "objective": "2.0", "savings": "2.0", "high": "2.0", "expenses": "1.0", "investpercent": "4.0"],
["low": "1.0", "date": "2018-07-25", "objective": "2.0", "savings": "2.0", "high": "2.0", "expenses": "1.0", "investpercent": "4.0"],
["low": "1.0", "date": "2018-08-25", "objective": "2.0", "savings": "2.0", "high": "2.0", "expenses": "1.0", "investpercent": "5.0"],
["low": "2", "date": "2018-09-26", "objective": "2.0", "savings": "2.0", "high": "4", "expenses": "1.0", "investpercent": "5.0"]
]
现在,请注意investpercent
最后在“2018-08-25”中更改,我感兴趣的值是“5.0”。我的想法是这样的:
var lastentry = importedRecords.suffix(1)
var lastdate: String = ""
for record in importedRecords {
if record["investpercent"] == lastentry["investpercent"] {
lastdate = record["date"]
}
}
但我一直试图将数组切片转换为正确的字典。
- 如何浏览此数组以检测
investpercent
上次更新的日期?
解决方案
这应该可以解决问题,它使用zip
:
let reversedRecords = importedRecords.reversed()
let zipped = zip(reversedRecords.dropFirst(), reversedRecords)
if let twoDictionaries = zipped.first(where: {$0["investpercent"] != $1["investpercent"]}),
let date = twoDictionaries.1["date"] {
print(date)
}
它打印2018-08-25