日本語版
最新ニュース
科学&テクノロジー

Ruby配列内の要素を見つける方法

フィルターまたは選択メソッドを使用するJavaScript と同様に、以下を選択できます。 .filter 配列Rubyのバージョン1 2 3 ary = ['abc', 'bzz', 'aaa'] ary.filter{|e| e.include?('a')} # ['abc', 'aaa'] JSバージョン1 2 3 let ary = ['abc', 'bzz', 'aaa'] ary.filter((e) => e.includes('a')) // ['abc', 'aaa'] かなり似ていますよね?補足: String を操作するときに、 .include? (ルビィ)と .includes (JS)…

Ruby配列内の要素を見つける方法

1707536948
2024-02-09 11:36:17

フィルターまたは選択メソッドを使用する

JavaScript と同様に、以下を選択できます。 .filter 配列

Rubyのバージョン

1
2
3
ary = ['abc', 'bzz', 'aaa']
ary.filter{|e| e.include?('a')}
# ['abc', 'aaa']

JSバージョン

1
2
3
let ary = ['abc', 'bzz', 'aaa']
ary.filter((e) => e.includes('a'))
// ['abc', 'aaa']

かなり似ていますよね?

補足: String を操作するときに、 .include? (ルビィ)と .includes (JS) メソッドは非常にわかりにくいです。 ここで共有する特別なヒントがあります 😬 IDE の自動補完に頼らないでください。

ご了承ください .select そして .filter は同じですが、実際には Ruby のエイリアスです。 しかし、JSではそうではありません。

したがって、次の両方のメソッドは同じです。

1
2
3
4
5
ary = ['abc', 'bzz', 'aaa']
ary.filter{|e| e.include?('a')}
# ["abc", "aaa"]
ary.select{|e| e.include?('a')}
# ["abc", "aaa"]

上の例では、両方が不変であることを強調しています。 ary 変数は連続した呼び出しの間で変化しませんでした。

インクルードを使用しますか? 方法

覚えておいてください .include? 直前の文字列に関するメソッド?

まあ、それは Array でも動作します:

1
2
3
4
5
ary = ['abc', 'bzz', 'aaa']
ary.include?('aaa')
# true
ary.include?(42)
# false

目的は上の段落と同じではないため、何を探しているかによって異なることに注意してください。

Ruby配列内の最後の要素を見つける方法

「最後」って言いましたよね? さて、それを使用してください .last 方法

1
2
3
ary = ['abc', 'bzz', 'aaa']
ary.last
# 'aaa'

にブロックを渡すことはできません。 .last メソッド (とにかく無視されます)

Ruby配列内の最初の要素を見つける方法

最初の要素だけを探している場合は、 .first ちょうどここにいます

1
2
3
ary = ['abc', 'bzz', 'aaa']
ary.first
# 'abc'

にブロックを渡すことはできません。 .first 方法(もう一度)

特定の条件に一致する最初の要素を見つけたい場合は、次を使用します。 .find

最初に一致する要素を検索する

.find 条件を渡すと、その条件に一致する最初の要素が返されます。

1
2
3
ary = ['abc', 'bzz', 'aaa']
ary.find{|e| e.include?('z')}
# 'bzz'

n番目に一致する要素を見つける方法

私が簡単に取得できなかったのは、指定された条件に一致する n 番目の要素を見つける方法です。

最初と最後は簡単です。 最初の試合は簡単です。

しかし、n番目の試合はどうなるでしょうか?

1
2
3
4
5
6
7
8
9
ary = ['abc', 'bzz', 'aaa']

# Retrive 2nd element with 'a' char
ary.select{|e| e.include?('a')}[1]
# => 'aaa'

# Retrieve 3rd element with 'a' char
ary.select{|e| e.include?('a')}[2]
# => nil

これについて汎用関数をどのように書くかはご想像にお任せします。私の謙虚な意見では、これは少しオーバーエンジニアリングです。

1
2
3
def nth(array, condition, position)
  # ...
end

Ruby配列内の指定された要素のインデックスを取得します。

次のようにインデックス メソッドを使用します。

1
2
3
ary = ['abc', 'bzz', 'aaa']
ary.index 'aaa'
# => 2

Ruby ではメソッドを呼び出すときに括弧はオプションであることに注意してください。

Ruby 配列での find_index の使用

.find_index 指定された条件に一致する最初の要素を取得します。

1
2
3
ary = ['abc', 'bzz', 'aaa']
ary.find_index{|e| e.include?('z')}
# => 1

まとめ

この記事を書いたのは、Ruby の配列で与えられた条件に一致する n 番目の要素を見つける方法が気になったからです。 これは、Ruby 配列内の内容を取得する方法を要約する良い口実でした。

#Ruby配列内の要素を見つける方法

執筆者について: nipponese

Nipponese News編集部は、国内外のニュースを日本語で分かりやすくお届けします。