Swift 程序从数组中删除所有"nil"元素

swiftserver side programmingprogramming更新于 2025/9/16 11:37:17

在本文中,我们将学习如何编写一个 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

// 创建一个包含 nil 值的数组
let mArray: [String?] = ["cloud", "sky", nil, "moon", nil, "bird", nil]

print("原始数组:", mArray)

// 移除 nil 值
let noNilArray: [String] = mArray.compactMap { $0 }

print("修改后的数组:", noNilArray)

输出

原始数组:[Optional("cloud"), Optional("sky"), nil, Optional("moon"), nil, Optional("bird"), nil]
修改后的数组:["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

// 创建一个整数类型的数组
var mArray = [23, nil, 4, 3, nil, 21, 12, nil, nil]

print("原始数组:", mArray)

// 移除 nil 元素
var res = mArray.filter { $0 != nil }

print("修改后的数组:", res)

输出

原始数组:[Optional(23), nil, Optional(4), Optional(3), nil, Optional(21), Optional(12), nil, nil]
修改后的数组:[Optional(23), Optional(4), Optional(3), Optional(21), Optional(12)]

上面的代码中,我们有一个整数类型的数组。现在我们使用 filter() 函数从给定数组中删除元素。为此,我们将 { $0 != nil } 作为闭包传递给 filter() 函数。此闭包从给定数组中获取从索引 0 到末尾的元素,并检查每个元素是否不等于 nil。如果条件为真,则将该元素添加到结果数组中。否则,删除该 nil 元素。

结论

以上就是我们如何从数组中删除所有"nil"元素。这两种方法都返回准确的结果,并且适用于所有数据类型。



相关文章



关于我们 | 隐私条款 | 学习路线
返回顶部