gpt4 book ai didi

ios - 将元素紧密分组

转载 作者:行者123 更新时间:2023-11-29 05:43:50 25 4
gpt4 key购买 nike

我正在尝试找出一种将元素分组在一起的可靠方法,其中值位于列表中的下一个。

我拥有的数据是这样的

let values = [
ChartDataEntry(x: 0.0, y: -13.0),
ChartDataEntry(x: 1.0, y: -13.0),
ChartDataEntry(x: 2.0, y: 0.68),
ChartDataEntry(x: 3.0, y: -13.0),
ChartDataEntry(x: 4.0, y: 1.7),
ChartDataEntry(x: 5.0, y: 0.5),
ChartDataEntry(x: 6.0, y: 10.0)
]

我正在尝试将其分组,以便它更像这样

let values = [
[
ChartDataEntry(x: 0.0, y: -13.0),
ChartDataEntry(x: 1.0, y: -13.0),
ChartDataEntry(x: 3.0, y: -13.0)
],
[
ChartDataEntry(x: 2.0, y: 0.68)
],
[
ChartDataEntry(x: 4.0, y: 1.7),
ChartDataEntry(x: 5.0, y: 0.5),
ChartDataEntry(x: 6.0, y: -10.0)
]
]

本质上,我试图实现的分组是将值高于 -13.0 的 x 元素放在一起,将低于 -13 的元素放在一起。棘手的部分是按 x 值分组。

目标是按彼此相邻的 x 值对值进行分组。

x:2.0 紧邻 3.0,但它是 -13,因此它不属于同一组,但如果您查看 4.0、5.0 和 6.0,它们都会被分组在一起,因为它们的值大于-13连续

我希望这是有道理的。

最佳答案

我发现实现这一点的简单解决方案是使用reduce函数。如果有人有任何其他更简洁的方法,我会洗耳恭听。

let grouped = values.filter({ $0.y != -13 }).reduce([[ChartDataEntry]]()) { result, item in
var result = result
if let lastX = result.last?.last?.x, item.x - 1.0 == lastX {
let lastIndex = result.count - 1
result[lastIndex].append(item)
} else {
result.append([item])
}
return result
}

关于ios - 将元素紧密分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56330617/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com