Swift 中的多維陣列扁平化
在 Swift 中,您可以使用高階函式來扁平化多維陣列。您可以結合使用 joined()、reduce() 和 flatMap() 函式。有時,您需要將多個數組合併成單個數組。在 Swift 中,您可以使用高階函式輕鬆實現。在本文中,我們將看到一些不同用例的示例。
示例 1:使用 flatMap() 函式
要扁平化 Swift 中的多維陣列,您可以將 joined() 方法與 flatMap() 函式一起使用。這是一個示例。
import Foundation
let arrayOfArrays = [[1, 2], [3, 4], [5, 6, 7]]
let flattenedArray = arrayOfArrays.flatMap { $0 }
print("Input array: \(arrayOfArrays)")
print("Flattened Array: \(flattenedArray)")
輸出
Input array: [[1, 2], [3, 4], [5, 6, 7]] Flattened Array: [1, 2, 3, 4, 5, 6, 7]
在這個示例中,flatMap() 用於將 arrayOfArrays 中的每個子陣列對映到其元素,然後使用 joined() 將結果陣列連線在一起形成單個扁平陣列。
示例 2:使用 reduce() 函式
或者,您可以使用 reduce() 方法來扁平化陣列。這是一個示例。
import Foundation
let arrayOfArrays = [[1, 2], [3, 4], [5, 6, 7]]
let flattenedArray = arrayOfArrays.reduce([], +)
print("Input array: \(arrayOfArrays)")
print("Flattened Array: \(flattenedArray)")
輸出
Input array: [[1, 2], [3, 4], [5, 6, 7]] Flattened Array: [1, 2, 3, 4, 5, 6, 7]
在這個示例中,reduce() 用於透過從空陣列開始並使用 + 運算子附加每個子陣列來將所有子陣列組合成單個數組。
示例 3:扁平化包含可選值的陣列
或者,您可以使用 flatMap() 方法來扁平化可選陣列。這是一個示例。
import Foundation
let arrayOfArrays: [[Int?]] = [[1, nil], [3, 4, 5], [nil, 7]]
let flattenedArray = arrayOfArrays.flatMap { $0 }
print("Input array: \(arrayOfArrays)")
print("Flattened Array: \(flattenedArray)")
輸出
Input array: [[Optional(1), nil], [Optional(3), Optional(4), Optional(5)], [nil, Optional(7)]] Flattened Array: [Optional(1), nil, Optional(3), Optional(4), Optional(5), nil, Optional(7)]
在這個示例中,arrayOfArrays 是一個包含 Int? 可選值的陣列。生成的 flattenedArray 包含子陣列的所有元素,包括 nil 值。
示例 4:扁平化包含重複元素的陣列
或者,您可以使用 Set 和 flatMap() 方法來扁平化陣列。這是一個示例。
import Foundation
let arrayOfArrays = [[1, 2, 3], [2, 3, 4], [3, 4, 5]]
let flattenedArray = Set(arrayOfArrays.flatMap { $0 })
print("Input array: \(arrayOfArrays)")
print("Flattened Array: \(flattenedArray)")
輸出
Input array: [[1, 2, 3], [2, 3, 4], [3, 4, 5]] Flattened Array: [5, 1, 4, 3, 2]
在這個示例中,arrayOfArrays 是一個包含一些重複元素的陣列。生成的 flattenedArray 是子陣列中所有唯一元素的集合,沒有特定順序。
示例 5:扁平化字串陣列以用於搜尋欄
或者,您可以使用 flatMap() 方法來扁平化字串陣列。這是一個示例。
import Foundation
let arrayOfArrays = [["apple", "orange"], ["banana", "grape"], ["pear", "pineapple"]]
let flattenedArray = Set(arrayOfArrays.flatMap { $0 })
print("Input array: \(arrayOfArrays)")
print("Flattened Array: \(flattenedArray)")
輸出
Input array: [["apple", "orange"], ["banana", "grape"], ["pear", "pineapple"]] Flattened Array: ["pineapple", "grape", "apple", "orange", "pear", "banana"]
在這個示例中,arrayOfArrays 是一個字串陣列,表示不同型別的水果。生成的 flattenedArray 可用作搜尋欄的資料來源,允許使用者按名稱搜尋任何水果。
示例 6:使用 Swift 中的 for 迴圈扁平化多維陣列
在您需要更多控制迭代過程的情況下,使用 for 迴圈可能很有用。這是一個示例。
import Foundation
let arrayOfArrays = [[1, 2, 3], [4, 5], [6, 7, 8, 9]]
var flattenedArray: [Int] = []
for subArray in arrayOfArrays {
for element in subArray {
flattenedArray.append(element)
}
}
print("Input array: \(arrayOfArrays)")
print("Flattened Array: \(flattenedArray)")
輸出
Input array: [[1, 2, 3], [4, 5], [6, 7, 8, 9]] Flattened Array: [1, 2, 3, 4, 5, 6, 7, 8, 9]
在這個示例中,我們從一個包含 Int 值的 arrayOfArrays 開始,表示不同的資料子集。然後,我們宣告一個型別為 [Int] 的空 flattenedArray 來儲存扁平化的值。
然後,我們使用巢狀 for 迴圈迭代 arrayOfArrays 中的每個子陣列,對於每個子陣列,我們迭代子陣列中的每個元素並將其附加到 flattenedArray。
結論
在 Swift 中,扁平化多維陣列意味著將巢狀陣列結構轉換為單個扁平陣列,其中包含子陣列中的所有元素,按照其出現的順序排列。
在 Swift 中扁平化多維陣列的方法有很多,包括使用 flatMap 方法(這是一種簡潔高效的方法)和使用 for 迴圈(這提供了對迭代過程的更多控制)。
扁平化多維陣列在許多實際場景中都很有用。例如,準備用於搜尋欄、圖表或表檢視中的資料。
資料結構
網路
關係資料庫管理系統 (RDBMS)
作業系統
Java
iOS
HTML
CSS
Android
Python
C語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP