Swift - 在数组中添加粒度(2 x 2、5 x 5 等)
Swift - Add granularity in Array (2 by 2, 5 by 5, etc..)
我目前正在使用 "Charts" pod。
我的应用显示运动员成绩的条形图,其中:
- X Axis: number of reps / time / rounds / weight
- Y Axis: number of athletes
我想收集不同组的重复次数。
类似于:10 < x < 20、20 < x < 30 等...而不是真正的总次数/时间/其他。
类似的东西:
根据 Max()
和 Min()
值之间的差异,我想更改粒度。
这是我现在拥有的:
let resultTime = [2458, 3500, 3600] // Fake data -> 41min, 58min, 60 min
let dict = Dictionary(grouping: resultTime, by: { [=11=] / 60 }).map { ([=11=].key, [=11=].value.count) }
这样,我就可以得到一个按分钟分组的字典。我明白了:
[(58, 1), (40, 1), (60, 1)]
我想将这些数据 2 对 2 分组,以得到类似的东西:
[(60, 2), (40, 1)]
是否可以使用 groupBy
的粒度?
正如@Alexander 所说,解决方案是舍入 by
函数
你可以用这个小函数来做到这一点:
func roundWithCoef(_ x : Double, coef: Int) -> Int {
return coef * Int(round(x / Double(coef)))
}
let dict = Dictionary(grouping: resultTime, by: { roundWithCoef(Double([=10=] / 60), coef: 4) }).map { ([=10=].key, [=10=].value.count) }
这样你就可以玩转coef数了
我目前正在使用 "Charts" pod。
我的应用显示运动员成绩的条形图,其中:
- X Axis: number of reps / time / rounds / weight
- Y Axis: number of athletes
我想收集不同组的重复次数。
类似于:10 < x < 20、20 < x < 30 等...而不是真正的总次数/时间/其他。
类似的东西:
根据 Max()
和 Min()
值之间的差异,我想更改粒度。
这是我现在拥有的:
let resultTime = [2458, 3500, 3600] // Fake data -> 41min, 58min, 60 min
let dict = Dictionary(grouping: resultTime, by: { [=11=] / 60 }).map { ([=11=].key, [=11=].value.count) }
这样,我就可以得到一个按分钟分组的字典。我明白了:
[(58, 1), (40, 1), (60, 1)]
我想将这些数据 2 对 2 分组,以得到类似的东西:
[(60, 2), (40, 1)]
是否可以使用 groupBy
的粒度?
正如@Alexander 所说,解决方案是舍入 by
函数
你可以用这个小函数来做到这一点:
func roundWithCoef(_ x : Double, coef: Int) -> Int {
return coef * Int(round(x / Double(coef)))
}
let dict = Dictionary(grouping: resultTime, by: { roundWithCoef(Double([=10=] / 60), coef: 4) }).map { ([=10=].key, [=10=].value.count) }
这样你就可以玩转coef数了