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元素。因此,最后的数组只包含非空元素。
方法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()函数从给定的数组中删除将元素。因此,我们在filter()函数中传递{ $0 != nil }作为一个闭包。这个闭包从给定的数组中提取元素,从索引0开始到结束,检查每个元素是否等于nil。如果条件为真,那么它就在结果数组中添加该元素。否则,它将删除这个nil元素。
结论
所以这就是我们如何从数组中删除所有的 “nil “元素。这里两个方法都返回准确的结果,它们对任何数据类型都有效。