【发布时间】:2021-02-09 12:06:47
【问题描述】:
我目前有一个 2D 数组(来自 JSON 解码),它被声明为
struct workoutList : Codable {
let intervals : [[Double]]
}
init(from decoder: Decoder) throws {
let values = try decoder.container(keyedBy: CodingKeys.self)
intervals = try values.decodeIfPresent([[Double]].self, forKey: .intervals)!
}
当我打印出区间数组时,它是一个二维数组,如下所示:
Intervals:[[0.0, 50.0], [10.2, 55.0], [10.0, 73.0]]
虽然我可以通过矩阵访问各个值,例如:intervals[0][1] = 50.0,但我认为将它分成 2 个 diff 数组更容易。 (数组集中的每个值都是[时间,百分比]。基本上我希望实现这些结果:
[时间] = [0.0,10.2,10.0] [百分比] = [50.0, 55.0, 73.0]
我查看了平面图,但这只会导致将 2D 数组删除为 1 个表单的单个数组
[0.0, 50.0, 10.2, 55.0, 10.0 73.0]
我尝试使用 map 查找示例,但认为它没有帮助。
我终于做到了,但看起来很丑:
let flattenedArray = tabbar.workoutIntervals.flatMap {$0}
print(flattenedArray) // [0.0, 50.0, 10.2, 55.0, 10.0, 73.0]
var timeArray = [Double]()
var wattArray = [Double]()
for x in 0...flattenedArray.count - 1 {
if x % 2 == 0{
timeArray.append(flattenedArray[x] )
} else {
wattArray.append(flattenedArray[x] )
}
}
print("time:\(timeArray)") // [ 0.0, 10.2, 10.0]
print("watt:\(wattArray)") // [50.0, 55.0, 73.0]
谢谢
【问题讨论】:
标签: arrays swift multidimensional-array