【问题标题】:Swift - Add granularity in Array (2 by 2, 5 by 5, etc..)Swift - 在数组中添加粒度(2 x 2、5 x 5 等)
【发布时间】:2019-02-08 01:39:19
【问题描述】:

我目前正在使用“图表”窗格。

我的应用显示运动员成绩条形图,其中:

  • X 轴:代表次数/时间/轮次/重量
  • Y 轴:运动员人数

我想收集不同组的代表数量。

类似于:10

类似的东西:

根据Max()Min() 值之间的差异,我想更改粒度。

这就是我现在拥有的:

let resultTime = [2458, 3500, 3600] // Fake data -> 41min, 58min, 60 min
let dict = Dictionary(grouping: resultTime, by: { $0 / 60 }).map { ($0.key, $0.value.count) }

这样,我可以将字典按分钟分组。我得到了这个:

[(58, 1), (40, 1), (60, 1)]

我想将这些数据 2 2 分组,而不是这样:

[(60, 2), (40, 1)]

有没有可能玩groupBy的粒度?

【问题讨论】:

  • 您只需要调整您的by 函数,即可实现所需的舍入。 “2乘2”是什么意思?
  • 对不起,我是法国人,翻译肯定很糟糕......像 [0, 2, 4, 6etc...] 或 5 [0, 5, 10, 15, etc.] .]
  • 所以改变你的 by 函数以四舍五入到最接近的 2 或 5。

标签: ios arrays swift sorting swift3


【解决方案1】:

正如@Alexander 所说,解决方案是对by 函数进行舍入

你可以用这个小功能做到这一点:

func roundWithCoef(_ x : Double, coef: Int) -> Int {
      return coef * Int(round(x / Double(coef)))
}

let dict = Dictionary(grouping: resultTime, by: { roundWithCoef(Double($0 / 60), coef: 4) }).map { ($0.key, $0.value.count) }

这样你就可以玩coef号了

【讨论】:

    猜你喜欢
    • 2019-01-07
    • 1970-01-01
    • 2018-08-07
    • 2020-11-20
    • 2018-07-08
    • 1970-01-01
    • 1970-01-01
    • 2021-05-12
    • 2018-06-08
    相关资源
    最近更新 更多