Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios Swift-在数组中添加粒度(2乘2、5乘5等)_Ios_Arrays_Swift_Sorting_Swift3 - Fatal编程技术网

Ios Swift-在数组中添加粒度(2乘2、5乘5等)

Ios Swift-在数组中添加粒度(2乘2、5乘5等),ios,arrays,swift,sorting,swift3,Ios,Arrays,Swift,Sorting,Swift3,我现在在“图表”播客上工作 我的应用程序显示运动员成绩的条形图,包括: X轴:重复次数/时间/轮数/重量 Y轴:运动员人数 我想收集不同组中的代表人数 比如:10

我现在在“图表”播客上工作

我的应用程序显示运动员成绩的条形图,包括:

  • 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
来处理粒度问题?

正如@Alexander所说,解决方案是通过
函数对
进行取整

您可以使用以下小功能完成此操作:

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数

只需通过
函数调整
,即可实现所需的舍入。“2乘2”是什么意思?对不起,我是法国人,翻译肯定不好。。。类似于[0,2,4,6等…]或带有5[0,5,10,15等…]的值,因此将
by
函数更改为四舍五入到最接近的2或5。