删除反向数组中的数组元素,delete_at不起作用

时间:2012-05-25 10:41:45

标签: ruby arrays reverse

如果我键入c.messages.reverse.delete_at(0)没有任何反应,其中message是数组。如果我键入c.messages.delete_at(0),它会删除第一个元素。为什么这不适用于反向?

2 个答案:

答案 0 :(得分:3)

这是因为reverse返回一个新数组,您要删除最后一个成员。你可以使用reverse!,这会改变原始数组。

如果要从数组中删除最后一个元素,最好的方法是使用pop

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

答案 1 :(得分:2)

delete_at可以处理负索引,从数组末尾向后计数(-1是最后一个元素):

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