在Swift中提取一部分二维数组

时间:2016-04-03 23:58:23

标签: ios arrays swift optimization multidimensional-array

我正在尝试学习如何在Swift中处理二维数组。这是我正在研究的双暗阵列:

var Image = [[1,2,3],[4,5,6],[7,8,9]]

如果我只想提取前两行和第一列(2x2),我将如何使用Swift的范围运算符(...)。我尝试了以下方法:

let extractedImage = Image[0...1][0...1]

它不起作用。它给了我前两行和列完全打印。如何在不使用for循环的情况下处理此问题?

3 个答案:

答案 0 :(得分:2)

Image[0...1]返回[[1,2,3],[4,5,6]]

第二个[0...1]应用于同一个数组[[1,2,3],[4,5,6]],该数组获得前两个仍为[1,2,3][4,5,6]的对象。

您要做的是将范围应用于您可以使用map执行的每个阵列。

let extractedImage = Image[0...1].map({ $0[0...1] })

答案 1 :(得分:1)

image[0...1].map { $0[0...1].flatMap { $0 } }。 :)

答案 2 :(得分:0)

我不确定我是否完全理解你的问题,但这是获得[[1, 2], [4, 5]]的更安全的方法

var images = [[1,2,3],[4,5,6],[7,8,9]]
let result = images.prefix(2).map { Array($0.prefix(2)) }

print(result) // [[1, 2], [4, 5]]