gpt4 book ai didi

arrays - 在 Swift 3 中比较字符串数组和字典

转载 作者:行者123 更新时间:2023-11-28 10:13:27 24 4
gpt4 key购买 nike

我有字符串数组 let filterClassName = ["A","B"]

现在我有了字典,它看起来像:

var responseArray: [[String: Any]] = []

responseArray.append(["id": 1,"name": "Prateek", "className": "A"])
responseArray.append(["id": 1,"name": "rateek", "className": "B"])
responseArray.append(["id": 3,"name": "ateek", "className": "C"])
responseArray.append(["id": 4,"name": "teek", "className": "D"])
responseArray.append(["id": 5,"name": "eek", "className": "A"])
responseArray.append(["id": 6,"name": "ek", "className": "E"])

现在从 responseArray 这是我的字典,我想要所有与我在 filterClassName 中提到的 className 相匹配的值

所以,我应该得到以下数组的输出:

["id": 1,"name": "Prateek", "className": "A"],["id": 1,"name": "rateek", "className": "B"],["id": 5,"name": "eek", "className": "A"]

提前致谢!

这是我试过的:

for value in filterClassName {
let cal = responseArray.filter { (($0["className"] as! String).contains(value)) }
for value in cal {
let valuesss = value
print ("valuesss" + String(describing: valuesss))
}
}

我上面的回答是非常基本的,但我希望这样的东西能起作用:

let cal = responseArray.filter { (($0["className"] as! String).contains(filterClassName)) }

简而言之,单行过滤,没有 for 循环,因为我讨厌它们!

最佳答案

你很接近,但反过来:

let filteredItems = responseArray.filter{ filterClassName.contains($0["className"] as! String) } 

但是——正如 Hamish 在评论中提到的——使用自定义结构更有效。

您的代码:

let filterClassName = ["A","B"]

var responseArray: [[String: Any]] = []

responseArray.append(["id": 1,"name": "Prateek", "className": "A"])
responseArray.append(["id": 1,"name": "rateek", "className": "B"])
responseArray.append(["id": 3,"name": "ateek", "className": "C"])
responseArray.append(["id": 4,"name": "teek", "className": "D"])
responseArray.append(["id": 5,"name": "eek", "className": "A"])
responseArray.append(["id": 6,"name": "ek", "className": "E"])

要添加的代码:

struct Student {
let name, className : String
let id : Int

init?(dictionary: [String:Any]) {
guard let id = dictionary["id"] as? Int,
let name = dictionary["name"] as? String,
let className = dictionary["className"] as? String else { return nil }
self.id = id
self.name = name
self.className = className
}
}

let students = responseArray.flatMap { Student(dictionary:$0) }
let filteredItems = students.filter{ filterClassName.contains($0.className) }
print(filteredItems)

关于arrays - 在 Swift 3 中比较字符串数组和字典,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44889263/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com