我在
Swift中有一个对象,它是Dictionary< String,String []>类型的字典.我希望能够在维护字典结构的同时过滤String []数组.
let list: Dictionary<String,String[]> = [ "vegetables" : [ "Carrot","Potato" ],"Fruit" : [ "Apple","Orange","Banana" ] ]
我希望能够过滤包含“O”的所有内容,并最终得到如下所示的内容:
[ "vegetables" : [ "Carrot","Fruit" : [ "Orange" ] ]
要过滤数组,我一直这样做:
["Carrot","Potato"].filter { ($0 as Nsstring).containsstring("o") }
解决方法
您可以在for循环中执行此操作:
for (key,array) in list { list[key] = array.filter { ($0 as Nsstring).containsstring("o") } }
extension Dictionary { func map(f: (KeyType,ValueType) -> ValueType) -> [KeyType:ValueType] { var ret = [KeyType:ValueType]() for (key,value) in self { ret[key] = f(key,value) } return ret } }
然后你可以简单地做:
var filteredList = list.map { $1.filter { ($0 as Nsstring).containsstring("o") } }
注意:我在Dictionary上的map实现返回字典的副本,更像是Array的map方法
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。