在 Ruby 中检查值是否存在于数组中

Stewart Nguyen 2023年1月30日
  1. 使用 Array#include? 检查值是否存在于 Ruby 数组中的方法
  2. 使用 Array#any? 检查值是否存在于 Ruby 数组中的方法
  3. 使用 Array#index 方法检查值是否存在于 Ruby 数组中
在 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? 接受一个块,它是复杂检查逻辑的理想选择。

如果块返回的值不是 falsenil,则返回 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

相关文章 - Ruby Array