2011-02-07 40 views
1

我有一個數組的數組,我想刪除所有在刪除空格後具有零或空的元素的項目。看看這段代碼:刪除陣列中空白的所有項目

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

我想刪除第二條記錄,因爲它不包含真實數據。

這樣做的最好方法是什麼?我應該簡單地遍歷數組,並寫if-else條件來測試嗎?

回答

13

如果使用普通的Ruby,你可以做

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

如果使用導軌,多虧了輔助方法,你可以做

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

的主要方法是rejectblank?

+0

只是注意,你可以使用拒絕! (with!)如果你喜歡編輯你的數組而不是創建一個新的數組 – Luis 2011-02-07 09:59:47

0

如果第一個數組將包含零,則當Chubas變體不起作用時。 讓我們稍微修改:

(使用Rails)

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