2012-05-25 32 views

回答

3

發生這種情況是因爲reverse返回一個新的數組,其中您正在刪除最後一個成員。你可能使用reverse!,它會改變原始數組。

如果你想從數組中刪除最後一個元素,最好的方法是使用pop

>> arr = ["a", "b", "c"] 
=> ["a", "b", "c"] 
>> arr.pop 
=> "c" 
>> arr 
=> ["a", "b"] 
+0

我明白了,我必須將新的數組添加回保存之前的對象使其堅持。謝謝! – jotun

+0

然而,刪除的數組元素可能在任何位置,所以我不能使用pop。然而感覺錯誤鍵入: 消息= c.messages.reverse messages.delete_at(PARAMS [:位置] .to_i) c.messages = messages.reverse 這將反轉反向,並使其恢復正常,這樣做的正確方法是什麼? – jotun

+1

@jotun你可以使用'messages.delete_at messaages.length - params [:position] .to_i'? – alex

2

delete_at可以處理負指數,從陣列的端部向後計數(-1是最後一個元素):

ar = [1,2,3,4,5] 
ar.delete_at(-2) 
p ar #=> [1, 2, 3, 5]