Swift:将[[[CGFloat]]]与[[CGFloat]]合并为额外数据的正确方法是什么

时间:2016-02-29 08:12:40

标签: ios swift

我有像

这样的CGFloat数组
[[[1,2],[2,3]],[[6,1],[5,6]],[[6,1],[11,6],[21,3]]]

不,我想合并子阵列并在每个子阵列中添加数组数据,如

[[1,2],[2,3],[9999,9999],[6,1],[5,6],[9999,9999],[6,1],[11,6],[21,3]]

现在我可以使用for circulation并在其中运行beforearray + array[i] + [9999,9999]来实现此功能,但我想知道最佳方式

2 个答案:

答案 0 :(得分:1)

您可以执行以下操作:

let foo = [[[1,2],[2,3]],[[6,1],[5,6]],[[6,1],[11,6],[21,3]]]

let bar = foo.joinWithSeparator([[9999,9999]]).map({$0})

print(bar)

// [[1, 2], [2, 3], [9999, 9999], [6, 1], [5, 6], [9999, 9999], [6, 1], [11, 6], [21, 3]]
  

joinWithSeparator返回一个视图,其元素是在序列separator的元素之间插入给定self的结果。

答案 1 :(得分:0)

您不能使用像filter这样的特殊数组运算符,因为第二个数组与第一个数组的类型不同。

这里有一个简单的循环:

let originalTab:[[[CGFloat]]]  = [[[1,2],[2,3]],[[6,1],[5,6]],[[6,1],
var newTab:[[CGFloat]] = []

for subArray in originalTab {
    newTab.appendContentsOf(subArray)
    newTab.append([9999, 9999])
}