【发布时间】:2017-07-03 15:26:45
【问题描述】:
我有字符串数组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 中提到的类名匹配的值
所以,我应该得到以下数组的输出:
["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 循环,因为我讨厌它们!
【问题讨论】:
-
你试过什么?我们不喜欢回答没有事先努力的问题。
-
@Alexander:已编辑!
-
这是对字典的不当使用——您应该创建一个结构来表示响应。然后过滤变得更简单。
-
@Hamish 这是我从字典中的 web 服务获得的数据。我正在寻找更少的代码
-
@P.J 与其寻找最短的代码,不如寻找最高效的代码。
标签: arrays swift string dictionary