2017-01-12 5 views
0

Ich benutze Ruby 2.4. Ich habe ein Array von Arrays, die dieseWie lösche ich Elemente aus meinem Array, wenn alle ihre Elemente leer sind?

[[2, 3, 4], ["", "", ""], ["a", "b", nil], [nil, "", nil], [151, "", "abcdef"]] 

grob aussieht Wie würde ich alle Felder in der obigen Liste zu beseitigen, wenn alle ihre Elemente sind entweder null oder leer? Um diese Funktion zu dem oben Nach der Anwendung, würde ich teh Ergebnis erwartet

[[2, 3, 4], ["a", "b", nil], [151, "", "abcdef"]] 

Antwort

1

So etwas wie dies mit reject und all sein:

arr.reject { |ar| ar.all? { |e| e.to_s.empty? } }  
#=> [[2, 3, 4], ["a", "b", nil], [151, "", "abcdef"]] 

Der Schlüssel hier nil.to_s.empty? #=> true ist.

1

Etwas wie folgt aus:

array.select { |sub_array| sub_array.any? { |element| element.present? } } 

Oder noch kürzer:

array.select { |sub_array| sub_array.any?(&:present?) } 
+0

'' vorhanden ist Rails nur richtig? –

+0

Das stimmt. Aber da das OP in den letzten Tagen mehrere Rails-Fragen gestellt hat, nehme ich an, dass sie Rails benutzt. – spickermann

Verwandte Themen