Ruby 配列内で条件が一致した値が最初に見つかった位置と値を取得する

Ruby 配列内で条件が一致した値が最初に見つかった位置と値を取得する

Rubyで、配列内で条件が一致した値が最初に見つかった位置と値を取得するソースコードを記述してます。「find_index」に条件を指定することで可能です。条件に一致する値がない場合は「nil」が返ります。

環境

  • OS windows11 home
  • ruby 3.1.3p185

配列内で条件が一致した値が最初に見つかった位置と値を取得

配列内で条件が一致した値が最初に見つかった位置と値を取得するには「find_index」で条件を指定して使用します。

module Enumerable
  def 関数名(&block)
    if i = find_index(&block)
      [i, self[i]]
    end
  end
end

実際に使用してみます。

module Enumerable
  def f(&block)
    if i = find_index(&block)
      [i, self[i]]
    end
  end
end

p [1, 1, 5, 5, 6].f { |v| v > 1 } # [2, 5]

p [1, 1, 5, 5, 6].f { |v| v > 5 } # [4, 6]

見つかった位置と値が取得されていることが確認できます。

値が存在しない場合

指定した値が存在しない場合は「nil」が返ります。

module Enumerable
  def f(&block)
    if i = find_index(&block)
      [i, self[i]]
    end
  end
end

p [1, 1, 5, 5, 6].f { |v| v > 8 } # nil