2011-02-04 23 views
1

這是使用Ruby 1.9。Ruby delete_if塊

我有一個delete_if塊:

@logHash[date].delete_if{ | logItem | logItem.name == name } 

哪裏logItem.namelogItemname的名稱是logItem我要找的名稱。這工作正常,但它會刪除指定的name每個logItem。有沒有辦法找到等於name的第一個項目,只刪除它?所以如果有兩個logItems有相同的name,我只想刪除其中的一個。有任何想法嗎?

+0

你問的是一個數組而不是哈希,對不對? – 2011-02-04 02:54:10

+0

是的,它是一個數組。 – 2011-02-04 02:55:08

回答

2

我會用Array#index找到第一個匹配名稱的項目的索引,然後Array#delete_at刪除它。

index_to_delete = @logHash[date].index {|log_item| log_item.name == name} 
@logHash[date].delete_at(index_to_delete)