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.