Ruby/Rails - 获取数组中的最后两个值

fuz*_*uzz 41 ruby ruby-on-rails

@numbers = [ 1, 2, 3, 4, 5, 6, 7, 8 ]

@numbers.last 会给我8

我需要抓住最后两个记录.到目前为止,我已经尝试了这个,但它抛出了NoMethodError:

@numbers.last - 1

ste*_*lag 107

last 采取论点:

@numbers = [ 1, 2, 3, 4, 5, 6, 7, 8 ]
@numbers.last(2) # => [7,8]
Run Code Online (Sandbox Code Playgroud)

如果要删除最后两项:

@numbers.pop(2) #=> [7, 8]
p @numbers #=> [1, 2, 3, 4, 5, 6]
Run Code Online (Sandbox Code Playgroud)

  • +1,由于某种原因我总是完全忘记这一点,尽管它读起来比索引版本友好得多...... (2认同)

Mic*_*ohl 15

数组是使用[]not 定义的{}.您可以使用负索引和范围来执行您想要的操作:

>> @numbers = [ 1, 2, 3, 4, 5, 6, 7, 8 ] #=> [1, 2, 3, 4, 5, 6, 7, 8]
>> @numbers.last #=> 8
>> @numbers[-2..-1] #=> [7, 8]
Run Code Online (Sandbox Code Playgroud)

  • 应该注意的是,范围以负界限**FAIL**开头,如果数组包含少于给定数量的项目,那么:`@numbers [-9 ..- 1]#=> nil`,而不是返回现有的8个要素.在这方面,`last`表现得更好.`@ numbers.last(9)`将返回8个元素数组. (3认同)