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配列内の要素を見つける方法