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([], +) 函式返回一個扁平化的陣列。

結論

使用以上方法,您可以輕鬆地將多維陣列展平為一維陣列。以上所有方法都適用於任何型別的陣列,例如浮點數、整數、字串等。

更新於: 2023-07-19

432 次瀏覽

開啟你的 職業生涯

透過完成課程獲得認證

開始學習
廣告

© . All rights reserved.