Rubyにネストされた配列があります:
array = [["a", "b"], ["c", "d"]]
「a」を含むネストされた配列を配列から削除するには、どのコマンドを使用できますか?
助けてくれてありがとう。
Rubyにネストされた配列があります:
array = [["a", "b"], ["c", "d"]]
「a」を含むネストされた配列を配列から削除するには、どのコマンドを使用できますか?
助けてくれてありがとう。
array.delete_if{|ary| ary.kind_of?(Array) and ary.include?('a') }
含むすべての配列を削除します"a"
["a", "b"]
それがまさにそれであることを知って、特に を削除したいですか、それとも"a"
残りの値に関係なく、 を含むすべての配列を削除したいですか? 問題仕様の一部として「「a」を含むネストされた配列」を意味したのか、それとも特定の例のどの要素を対象として回答したいかを示す方法なのかは明らかではありません。
最初のものについては、DigitalRoss の回答を使用できます。
2 つ目は、Huluk を使用できますが、これは別の意味で過度に具体的です。kind_of? Array
私はそのテストを避けるでしょう。要素がすべて配列であることがわかっている場合は、それを想定して先に進み、例外をキャッチして例外をキャッチします。
array.delete_if { |sub| sub.include? 'a' }
テストが必要な場合は、明示的なクラス チェックの代わりにダックタイピングを使用します。
array.delete_if { |item| item.respond_to? :include? and item.include? 'a' }
> [["a", "b"], ["c", "d"]] - [["a", "b"]]
=> [["c", "d"]]
要素に「a」が含まれていることを知っている以外に、要素のハンドルをまだ持っていない場合は、次のことができます。
array - [array.find { |x| x.include? "a" }]
これを試して:
array.delete_if { |x| x.include? "a" }