Swift 程式獲取扁平化的一維陣列
Swift 具有各種函式,如 flatmap()、compactmap()、reduce(),用於將一維陣列展平。
陣列用於按順序儲存相同資料型別的元素,而集合用於儲存相同資料型別的不同元素,且沒有任何確定順序。
方法 1:使用 flatmap() 函式
為了將二維陣列展平為一維陣列,我們可以使用 flatmap() 函式。flatmap() 函式透過將子陣列連線到單個數組中來返回一個數組。
語法
func flatMap{_res}
這裡,res 是一個閉包,它接受指定陣列的元素作為其引數,並返回一個扁平化的陣列。
示例
以下 Swift 程式使用 flatmap() 函式獲取扁平化的一維陣列
import Foundation
import Glibc
// Function to print the flatten array
func fArray(arr: [[Int]]) -> [Int] {
return arr.flatMap { $0 }
}
let mArray = [[23, 21, 13], [1, 1, 10], [89, 81, 19]]
let outputArray = fArray(arr: mArray)
print("Original Array:", mArray)
print("Flattened Array:", outputArray)
輸出
Original Array: [[23, 21, 13], [1, 1, 10], [89, 81, 19]] Flattened Array: [23, 21, 13, 1, 1, 10, 89, 81, 19]
在上面的程式碼中,我們有一個二維陣列。現在我們建立一個 fArray() 函式,它接受二維陣列作為輸入,並使用 flatMap{$0} 函式返回一個扁平化的陣列。
方法 2:使用 compactMap() 函式
我們還可以使用 compactMap() 函式將二維陣列展平為一維陣列。compactMap() 函式接受指定的陣列元素作為引數,然後轉換它們,並在一個非空陣列中返回結果。
語法
func compactMap{_transform}
這裡,transform 是一個閉包,它接受指定陣列的元素作為其引數,並返回一個可選值。
示例
以下 Swift 程式使用 contactMap() 函式獲取扁平化的一維陣列
import Foundation
import Glibc
// Function to print the flatten array
func FlatArray(arr: [[Int]]) -> [Int] {
return arr.compactMap{$0}.reduce([], +)
}
let mArray = [[3, 20, 13], [11, 12, 10], [9, 81, 1]]
let outputArray = FlatArray(arr: mArray)
print("Original Array:", mArray)
print("Flattened Array:", outputArray)
輸出
Original Array: [[3, 20, 13], [11, 12, 10], [9, 81, 1]] Flattened Array: [3, 20, 13, 11, 12, 10, 9, 81, 1]
在上面的程式碼中,我們有一個二維陣列。現在我們建立一個 FlatArray() 函式,它接受二維陣列作為輸入,並使用 compactMap{$0}.reduce([], +) 函式返回一個扁平化的陣列。
方法 3:使用使用者定義函式
我們還可以建立一個使用者定義函式來將二維陣列展平為一維陣列。在這個函式中,我們執行一個巢狀的 for 迴圈來遍歷二維陣列的每個元素,然後將元素追加到一維陣列中。
示例
以下 Swift 程式使用使用者定義函式獲取扁平化的一維陣列。
import Foundation
import Glibc
// Function to print the flatten array
func myArray(arr: [[Int]]) -> [Int] {
var resultantArray: [Int] = []
for subArr in arr {
for ele in subArr {
resultantArray.append(ele)
}
}
return resultantArray
}
let mArray = [[3, 20, 13, 1, 11], [51, 12, 10, 3, 33]]
let outputArray = myArray(arr: mArray)
print("Original Array:", mArray)
print("Flattened Array:", outputArray)
輸出
Original Array: [[3, 20, 13, 1, 11], [51, 12, 10, 3, 33]] Flattened Array: [3, 20, 13, 1, 11, 51, 12, 10, 3, 33]
在上面的程式碼中,我們有一個二維陣列。現在我們建立一個名為 myArray() 的函式來展平一維陣列。此函式接受一個數組作為引數,然後建立一個一維陣列來儲存結果,然後執行一個巢狀的 for 迴圈來遍歷給定二維陣列的每個元素,並將每個元素儲存在結果陣列中。
方法 4:使用 reduce() 函式
為了將二維陣列展平為一維陣列,我們可以使用 reduce() 函式。reduce() 函式用於根據給定的閉包組合陣列的元素。
語法
func reduce{_initialRes, _nextRes}
這裡,initialRes 用於儲存初始累積值,該值在第一次執行閉包時進一步傳遞給 nextRes。nextRes 是一個閉包,用於將累積值和序列的元素組合成一個新的累積值,該值在 nextRes 閉包的下一次呼叫中進一步使用。
示例
以下 Swift 程式在 reduce() 函式的幫助下獲取扁平化的一維陣列。
import Foundation
import Glibc
// Function to print the flatten array
func FArray(arr: [[Int]]) -> [Int] {
return arr.reduce([], +)
}
let mArray = [[3, 20, 13, 1], [11, 12, 10, 3], [9, 81, 1, 3], [2, 33, 1, 22]]
let outputArray = FArray(arr: mArray)
print("Original Array:", mArray)
print("Flattened Array:", outputArray)
輸出
Original Array: [[3, 20, 13, 1], [11, 12, 10, 3], [9, 81, 1, 3], [2, 33, 1, 22]] Flattened Array: [3, 20, 13, 1, 11, 12, 10, 3, 9, 81, 1, 3, 2, 33, 1, 22]
在上面的程式碼中,我們有一個多維陣列。現在我們建立一個 FArray() 函式,它接受多維陣列作為輸入,並使用 reduce([], +) 函式返回一個扁平化的陣列。
結論
使用以上方法,您可以輕鬆地將多維陣列展平為一維陣列。以上所有方法都適用於任何型別的陣列,例如浮點數、整數、字串等。
資料結構
網路
RDBMS
作業系統
Java
iOS
HTML
CSS
Android
Python
C 語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP