每当我在特定列中找到不同的值时,我想迭代2D数组并生成子数组。例如:
TEST <----- This value should be ignored. Start counting at index 1.
A
A
A
-------- split here --------
B
B
B
-------- split here --------
C
-------- split here --------
这导致3个阵列。
我对这个问题的解决方案是采用2D数组的递归方法:
static func splitArray(fromArray array: [[String]], startIndex: Int = 1) {
for x in startIndex..<array.count {
if array.indices.contains(x+1) {
if (array[x][7]) != array[x+1][7] {
splitArray(fromArray: array, startIndex: x+1)
}
} else {
break
}
}
}
在此方法中,我执行以下操作:
额外信息:
为什么我的功能没有破坏?它确实做了它的工作 - 它正确地分裂但是当它不应该时它重新开始。
P.S:如果有任何编码建议我会非常感激,我觉得这个代码一般都不好。答案 0 :(得分:0)
解决了它:
static func split(_ array: [[String]], startIndex: Int = 1) {
for x in startIndex..<array.count {
if array.indices.contains(x+1) {
if (array[x][7]) != array[x+1][7] {
split(array, startIndex: x+1)
break
}
}
}
}
“修复”是在调用递归函数后包含中断。我想在调用split之后for循环恢复了。