0

Rubyにネストされた配列があります:

array = [["a", "b"], ["c", "d"]]

「a」を含むネストされた配列を配列から削除するには、どのコマンドを使用できますか?

助けてくれてありがとう。

4

4 に答える 4

4

array.delete_if{|ary| ary.kind_of?(Array) and ary.include?('a') } 含むすべての配列を削除します"a"

于 2013-01-31T18:21:16.147 に答える
2

["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' }
于 2013-01-31T18:26:43.823 に答える
1
> [["a", "b"], ["c", "d"]] - [["a", "b"]]
 => [["c", "d"]] 

要素に「a」が含まれていることを知っている以外に、要素のハンドルをまだ持っていない場合は、次のことができます。

array - [array.find { |x| x.include? "a" }]
于 2013-01-31T18:19:59.510 に答える
0

これを試して:

   array.delete_if { |x| x.include? "a" }
于 2013-01-31T18:26:11.093 に答える