JPC*_*JPC 3 arrays collections swift
假设我有下面任何对象的数组,我正在寻找一种方法来计算数组中的项目如下:
var OSes = ["iOS", "Android", "Android","Android","Windows Phone", 25]
Run Code Online (Sandbox Code Playgroud)
快速做下面这样的事情有一个简短的方法吗?
Oses.count["Android"] // 3
Run Code Online (Sandbox Code Playgroud)
Ant*_*nio 17
快速,紧凑和优雅的方法是使用以下reduce方法:
let count = OSes.reduce(0) { $1 == "Android" ? $0 + 1 : $0 }
Run Code Online (Sandbox Code Playgroud)
它比for循环更紧凑,并且比a更快filter,因为它不会生成新的数组.
该reduce方法采用初始值,在我们的例子中为0,并且一个闭包应用于数组的每个元素.
闭包需要2个参数:
闭包返回的值用作下一次迭代中的第一个参数,或者作为reduce处理最后一个元素时方法的返回值
闭包只是检查当前元素是否Android:
使用.filter以下命令非常简单:
OSes.filter({$0 == "Android"}).count // 3
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2259 次 |
| 最近记录: |