在 Ruby 中检查值是否存在于数组中
Stewart Nguyen
2023年1月30日
-
使用
Array#include?
检查值是否存在于 Ruby 数组中的方法 -
使用
Array#any?
检查值是否存在于 Ruby 数组中的方法 -
使用
Array#index
方法检查值是否存在于 Ruby 数组中
在 Ruby 中,数组是一种常见的数据类型。它包含各种数据类型的元素,包括数字、字符串、布尔值,甚至另一个数组。
在某些情况下,我们可能需要检查给定数组中是否存在值。本文展示了如何使用数组的内置方法来做到这一点。
使用 Array#include?
检查值是否存在于 Ruby 数组中的方法
Array#include?
似乎是检查值是否位于数组中的最直接的方法。
如果一个元素在数组中,Array#include?
返回 true
,否则返回 false
。
print(['ruby', 'sapphire', 'amber'].include?('ruby'))
print("\n")
print(['ruby', 'sapphire', 'amber'].include?('moonstone'))
输出:
true
false
使用 Array#any?
检查值是否存在于 Ruby 数组中的方法
我们也可以使用 Array#any?
而不是 Array#include?
查看数组是否包含值。因为 Array#any?
接受一个块,它是复杂检查逻辑的理想选择。
如果块返回的值不是 false
或 nil
,则返回 true
。
print(['ruby', 'sapphire', 'amber'].any? { |gem| gem == 'moonstone' })
print("\n")
print(['ruby', 'sapphire', 'amber'].any? { |gem| gem == 'ruby' })
输出:
false
true
下面的代码将使用 any?
查看数组是否包含任何大小大于 4 的 gem。
print(['ruby', 'sapphire', 'amber'].any? { |gem| gem.size > 4 })
输出:
true
使用 Array#index
方法检查值是否存在于 Ruby 数组中
它要么采用单个值,如 include?
确实,还是一个块。
Array#index
返回匹配值的索引,否则返回 nil
,不像 include?
和 any?
返回布尔值。
print(['ruby', 'sapphire', 'amber'].index { |gem| gem == 'ruby' })
print("\n")
print(['ruby', 'sapphire', 'amber'].index { |gem| gem.size > 10 })
输出:
0
#returns nil