首页 > 解决方案 > 向后浏览字典以查找上次更新值的时间

问题描述

我有一个字典数组,其中有两个感兴趣的键对。一个密钥对是日期,另一个是“投资百分比”,其值经常变化。我想找出上次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"]
    }

}

但我一直试图将数组切片转换为正确的字典。

标签: arraysswift

解决方案


这应该可以解决问题,它使用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


推荐阅读