跳到主要内容

Swift 字典 filter() 方法

filter() 方法返回满足提供条件的字典中的所有键-值对。

示例

var marks = ["Sabby": 89, "Dabby": 45, "Cathy": 74]

// 返回所有值大于50的键-值对
var result = marks.filter({ $0.value > 50})

print(result)

// 输出: ["Cathy": 74, "Sabby": 89]

filter() 语法

filter() 方法的语法如下:

dictionary.filter({条件})

这里,dictionaryDictionary 类的对象。

filter() 参数

filter() 方法接受一个参数:

  • 条件 - 一个接受条件并返回 Bool 值的闭包。

filter() 返回值

  • 返回一个新的字典,其中包含满足提供条件的所有来自 dictionary 的元素。

示例1:Swift 字典过滤(filter())

var age = ["Kyle": 7, "Eric": 9, "Kenny": 10]

// 返回所有值以 "K" 开头的键-值对
var result = age.filter( { $0.key.hasPrefix("K") } )

print(result)

输出

["Nepal", "Norwegian"]

在上面的程序中,请注意闭包的定义:

{ $0.key.hasPrefix("K") }

这是一个检查字典中所有键是否以 "K" 为前缀的缩写闭包。

$0 是指代传递到闭包中的第一个参数的简写。

该闭包根据条件返回一个 Bool 值。如果条件是

  • true - 字典的键-值对被保留
  • false - 字典的键-值对被删除/省略

最后,所有以 "K" 开头的元素都存储在 result 变量中。

示例2:仅返回字典中的偶数值

var numbers = ["1st": 2, "2nd": 7, "3rd": 4, "4th": 5]

// 检查所有值是否为偶数
var result = numbers.filter({ $0.value % 2 == 0 })

print(result)

输出

["1st": 2, "3rd": 4]