Удаление всех элементов из массива массивов, которые являются пустыми - PullRequest
1 голос
/ 07 февраля 2011

У меня есть массив массивов, и я хотел бы удалить все элементы, в которых есть элементы, которые равны нулю или пусты после удаления пробелов.Посмотрите на этот фрагмент:

x = Array.new
x << ["A","B", " ", "D"]
x << ["","  ", nil, ""]
x << ["E","Q", "F", "M"]

Я хотел бы удалить вторую запись, потому что она не содержит реальных данных.

Каков наилучший способ сделать это?Должен ли я просто перебрать массив и написать условия if-else для проверки?

Ответы [ 3 ]

13 голосов
/ 07 февраля 2011

Если вы используете обычный Ruby, вы можете сделать

x.reject{ |arr| arr.all? {|elem| elem.nil? || elem.strip.empty? }}

Если вы используете рельсы, вы можете использовать вспомогательные методы

x.reject{ |arr| arr.all?(&:blank?) }

Ключевыми методами являются reject и blank?

4 голосов
/ 07 февраля 2011
x.reject { |a| a.join.strip.length == 0 }
0 голосов
/ 18 сентября 2013

Если первый массив будет содержать nil, когда вариант Chubas не работает. Давайте немного изменим его:

(с использованием рельсов)

x.compact.reject{ |arr| arr.all?(&:blank?) }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...