在 Ruby 中檢查值是否存在於陣列中

Stewart Nguyen 2023年1月30日 2022年5月18日
  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