2016-04-03 24 views
1

我在學習如何處理Swift中的二維數組。這是一個兩維數組我的工作:在Swift中提取二維數組的一部分

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

如果我想只提取前兩行和第一列(2×2),我將如何做到這一點與斯威夫特的範圍操作符(...)。我試過以下內容:

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

它沒有工作。它給了我前兩行,列完全打印。如何在不使用for循環的情況下處理這個問題?

回答

1

或者image[0...1].map { $0[0...1].flatMap { $0 } }的更安全的方式。 :)

+0

請解釋您的答案如何解決問題,這將有助於每個人更清楚地瞭解您的解決方案,以備將來參考。 – Aziz

1

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

將第二個[0...1]應用於同一個陣列[[1,2,3],[4,5,6]],該陣列獲得仍然爲[1,2,3][4,5,6]的前兩個對象。

你想要做的是將範圍應用到你可以使用地圖做的每個數組。

let extractedImage = Image[0...1].map({ $0[0...1] }) 
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]]