我们可以把数组看作是数据库,或者更确切地说,是数据库中的一个表。数组的主要用途是在一个实体中存储相关的项目,使你能够有效地管理它们。
本教程将说明如何使用选择、查找和拒绝方法对数组的结果进行过滤。
使用选择方法
我们使用select语句来过滤数组中的元素,寻找符合特定条件的子集。
select方法返回一个新的数组,其中包含所有条件评估为真的值。
选择方法接受一个块来指定条件。
比如说:
frameworks = ["React","Angular","Vue JS","Svelte"]
print frameworks.select {|i| i.length > 6}
在上面的例子中,我们使用select方法来过滤掉长度大于6的字符串。
块中的代码将遍历数组中的每个项目,检查条件。如果是真的,那么select语句将把它添加到一个新的集合中。
原地选择
选择语句不影响原始数组。它创建了一个新的数组,其中的项目符合指定的条件。
为了影响原数组,我们可以使用select!方法。
frameworks = ["React","Angular","Vue JS","Svelte"]
frameworks.select! {|i| i.length > 6}
print frameworks
frameworks数组被修改为只包含长度大于6的元素。
=> ["Angular"]
使用查找方法
我们可以使用find方法在数组中找到一个符合特定条件的单一元素。
比如说:
frameworks = [
"React",
"Angular",
"Vue JS",
"Svelte"
]
print frameworks.find {|i| i.length == 5}
find方法将返回指定条件的第一个匹配项。
下面是一个输出的例子:
=> React
如果没有匹配,该方法返回nil。
有时你可能会遇到find_all方法。find_all方法返回所有的匹配对象,而不是一个单一的对象。你可以认为它是select方法的一个别名。
使用拒绝方法
拒绝方法与选择方法完全相反。该方法不包括符合特定条件的值,而是拒绝这些元素。
比如说:
frameworks = ["React","Angular","Vue JS","Svelte"]
print frameworks.reject {|i| i.length > 6}
在上面的例子中,我们删除了所有长度大于6的元素,在我们的例子中,这只是一个单一的对象。
得到的值是这样的:
=> ["React", "Vue JS", "Svelte"]
总结一下
你刚刚学会了如何使用选择、查找和拒绝方法来过滤数组中的元素。