2011-02-07 10 views
1

배열 배열이 있고 공백을 제거한 후 요소가없는 모든 항목을 제거하고 싶습니다. 이 스 니펫을 살펴보십시오.비어있는 배열 배열에서 모든 항목 제거

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

실제 데이터가 없으므로 두 번째 레코드를 제거하고 싶습니다.

이 작업을 수행하는 가장 좋은 방법은 무엇입니까? 배열을 반복하고 if-else 조건을 테스트하여 작성해야합니까? , 도우미 방법 덕분에 레일을 사용하는 경우

답변

13

일반 루비를 사용하는 경우, 당신은 당신이 주요 방법은 reject 있습니다

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

blank?

+0

주의

(사용 레일) : 약간을 수정할 수 있습니다! (!) 새 배열을 만드는 대신 배열을 편집하는 것을 선호한다면 – Luis

4
x.reject { |a| a.join.strip.length == 0 } 
을 할 수

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

을 수행 할 수 있습니다

0

첫 번째 배열에 Chubas 변형이 작동하지 않는 경우 nil이 포함됩니다. 당신이 거절 사용할 수있는

x.compact.reject{ |arr| arr.all?(&:blank?) } 
관련 문제