2017-01-12 5 views
0

Я использую Ruby 2.4. У меня есть массив массивов, который выглядит примерно такКак удалить элементы из моего массива, если все их элементы пустые?

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

Как бы устранить все массивы в приведенном выше списке, если все их элементы либо ноль или пусто? После применения этой функции выше, я бы ожидать, Teh результат будет

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

ответ

1

Что-то вроде этого, используя reject и all:

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

Ключевым моментом здесь является nil.to_s.empty? #=> true.

1

Что-то вроде этого:

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

Или еще короче:

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

'' присутствует в Rails только правильно? –

+0

Это правда. Но поскольку ОП задал несколько вопросов Rails в последние дни, я предполагаю, что она использует Rails. – spickermann