arrays - 按条件快速过滤数组
问题描述
我的猫模型有这个:
var id: Int?
如果我有一组猫,我如何获得所有 id 为 7 的猫?我假设我应该使用过滤器方法:
let filteredCats = cats.filter(???)
解决方案
除非您没有其他要求,否则它应该很简单。
cats.filter { $0.id == 7 }
并跳过可选值,您可以使用compactMap
例如
let array: [Cat] = [
Cat(id: 7, name: "CatA"),
Cat(id: nil, name: "CatB"),
Cat(id: 1, name: "CatC"),
Cat(id: 7, name: "CatD"),
Cat(id: 7, name: "CatE"),
Cat(id: 2, name: "CatF"),
Cat(id: nil, name: "CatG"),
]
print(array.compactMap { value -> Cat? in
guard let id = value.id, id > 2 else { return nil }
return value
})
推荐阅读
- android - ARCore ArFragment 上 MapBox 覆盖的圆角
- python - return x,y 和 return (x,y) 之间有什么功能区别吗?还是纯粹的语法?
- c# - Unity 2019 - 如何在运行时将混音器音频输出保存到音频剪辑或将新保存的 .wav 加载到音频剪辑?
- firebase - Firebase 在这些用例中读取了多少数据
- wpf - Visual Studio 2019 社区无法创建 WPF 应用程序 (.NET Core)
- python - Scrapy 无法连接到 MSSQL 数据库
- python - How to call non abstract method in a abstract class?
- android - 在 Firestore 中添加新文档时出现 IllegalArgumentException
- angular - Angular 8 发送一个带有 navigate() 的数组是返回一个对象而不是数组本身
- android - 这个用于 Android 应用的 Kotlin 代码有什么作用?