Swift 程式移除陣列中所有 'nil' 元素


在本文中,我們將學習如何編寫一個 Swift 程式來移除陣列中的所有 'nil' 元素。

到目前為止,我們都知道陣列可以儲存單一資料型別元素。但是 Swift 陣列也可以儲存多種資料型別的元素。為了在陣列中儲存多種資料型別,我們使用 [Any],其中 [Any] 指定地址可以儲存任何資料型別的元素。類似地,陣列也可以包含 nil 值。這裡我們使用以下方法來移除陣列中的 nil 元素。

  • 使用 compactMap() 函式

  • 使用 filter() 函式

方法 1:使用 compactMap() 函式

為了移除陣列中的所有 `nil` 元素,我們使用 compactMap() 函式。compactMap() 函式接收包含 nil 元素的序列作為輸入,並將結果轉換為僅包含非 nil 元素的陣列。

語法

func compactMap<elementOfResult>(_tClosure:(self.Element)throws -> elementOfResult?)rethrows -> [elementOfResult]

這裡,tClosure 是一個閉包,它接收給定序列中的專案作為引數,並返回一個可選值。

演算法

  • 步驟 1 - 建立一個包含 nil 值的陣列。

  • 步驟 2 - 列印原始陣列。

  • 步驟 3 - 使用 compactMap() 函式移除陣列中的 nil 元素。

  • 步驟 4 - 列印修改後的陣列。

示例

以下 Swift 程式用於移除陣列中的所有 'nil' 元素。

import Foundation
import Glibc

// Creating an array with nil value 
let mArray: [String?] = ["cloud", "sky", nil, "moon", nil, "bird", nil]

print("Original Array:", mArray)

// Removing nil values
let noNilArray: [String] = mArray.compactMap { $0 }

print("Modified Array:", noNilArray)

輸出

Original Array: [Optional("cloud"), Optional("sky"), nil, Optional("moon"), nil, Optional("bird"), nil]
Modified Array: ["cloud", "sky", "moon", "bird"]

在上面的程式碼中,我們有一個字串型別的陣列。現在使用 compactMap() 函式,我們遍歷給定陣列的每個元素(從索引 0 開始),並從陣列中移除 nil 元素。因此,結果陣列僅包含非 nil 元素。

方法 2:使用 filter(_:) 函式

我們還可以使用 filter() 函式移除陣列中的 nil 元素。filter(_:) 函式返回一個數組,該陣列包含滿足給定條件的所有元素。

語法

func filter(_mClosure:(self.Element) throws -> Bool)rethrows->[Self.Element]

這裡,mClosure 是一個閉包,它接收給定序列中的專案作為引數,並返回一個布林值,指示是否應將該元素包含在返回的陣列中。

演算法

  • 步驟 1 - 建立一個整數型別的陣列。

  • 步驟 2 - 列印原始陣列。

  • 步驟 3 - 使用 filter() 函式移除陣列中的 nil 元素

  • 步驟 4 - 列印輸出。

示例

以下 Swift 程式用於移除陣列中的所有 'nil' 元素。

import Foundation
import Glibc

// Creating an array of integer types
var mArray = [23, nil, 4, 3, nil, 21, 12, nil, nil]

print("Original array:", mArray)

// Removing nil elements
var res = mArray.filter { $0 != nil }

print("Modified array:", res)

輸出

Original array: [Optional(23), nil, Optional(4), Optional(3), nil, Optional(21), Optional(12), nil, nil]
Modified array: [Optional(23), Optional(4), Optional(3), Optional(21), Optional(12)]

在上面的程式碼中,我們有一個整數型別的陣列。現在我們使用 filter() 函式來移除給定陣列中的 nil 元素。為此,我們在 filter() 函式中傳遞 `{ $0 != nil }` 作為閉包。此閉包接收給定陣列中的元素(從索引 0 到結束),並檢查每個元素是否不等於 nil。如果條件為真,則將其新增到結果陣列中。否則,它將移除該 nil 元素。

結論

這就是我們如何移除陣列中所有 'nil' 元素的方法。這裡兩種方法都返回準確的結果,並且適用於任何資料型別。

更新於: 2023年1月17日

1K+ 次瀏覽

開啟你的 職業生涯

透過完成課程獲得認證

立即開始
廣告

© . All rights reserved.