I am NOT looking for the Min/Max of an Element in an Array.
我希望通过比较数组中all the other elements的same property和property of the element来识别元素.
我相信这很简单,因为有几个内置的数组方法(Min
/Max
)并指定了特定的Comparable
/Equatable
协议.在过go 的40年里,数组发生了很大的变化,我不知道如何实现我的目标.
详情/细节...
我有一个struct数组(JimGyro
). 数组中 struct 体(gpsCt
)的一个属性将有103个不同的重复值. 数组中 struct (measVal
)的另一个属性将具有不同的值.
我的挑战
- 我需要收集所有具有相同
gpsCt
的元素- 最少1个/最多
gpsCt
个
- 最少1个/最多
- 然后确定1-
measVal
子集中哪个元素的最大值为measVal
- 将最大值
measVal
复制到同一元素subGrpMaxVal
属性中. - 最后,将该元素复制到新数组中.
列表中的最后两个很容易,但我不太清楚实现这一点的嵌套循环(for
/ForEach
/Do While
).
预先感谢您的任何/所有指针‼️
以下是我的 struct 和样例数组:
struct JimGyro {
var xGyro: Double
var yGyro: Double
var zGyro: Double
var gpsCt: Int
var measVal: Double
var subGrpMaxVal: Double
}
var theArray = [
JimGyro(xGyro: 0.0235, yGyro: 0.0351, zGyro: 0.0495, gpsCt: 1, measVal: 2.3, subGrpMaxVal: 0),
JimGyro(xGyro: 0.0235, yGyro: 0.0351, zGyro: 0.0495, gpsCt: 1, measVal: 2.4, subGrpMaxVal: 0),
JimGyro(xGyro: 0.0235, yGyro: 0.0351, zGyro: 0.0495, gpsCt: 1, measVal: 2.1, subGrpMaxVal: 0),
JimGyro(xGyro: 0.0235, yGyro: 0.0351, zGyro: 0.0495, gpsCt: 2, measVal: 1.6, subGrpMaxVal: 0),
JimGyro(xGyro: 0.0235, yGyro: 0.0351, zGyro: 0.0495, gpsCt: 2, measVal: 4.7, subGrpMaxVal: 0),
JimGyro(xGyro: 0.0235, yGyro: 0.0351, zGyro: 0.0495, gpsCt: 3, measVal: 4.8, subGrpMaxVal: 0),
JimGyro(xGyro: 0.0235, yGyro: 0.0351, zGyro: 0.0495, gpsCt: 3, measVal: 9.2, subGrpMaxVal: 0),
JimGyro(xGyro: 0.0235, yGyro: 0.0351, zGyro: 0.0495, gpsCt: 3, measVal: 3.4, subGrpMaxVal: 0),
JimGyro(xGyro: 0.0235, yGyro: 0.0351, zGyro: 0.0495, gpsCt: 3, measVal: 2.3, subGrpMaxVal: 0),
]
- GPS坐标以1-ish per second的速率读取.
- 陀螺仪数据以30-ish per second的速率读取.
- ("ISH"是因为,由于各种原因,并非每个GPS读数正好对应30个陀螺仪读数.)
- 因此,I 101只获取30个元素的区块.