【问题标题】:Ruby/Rails - Get the last two values in an arrayRuby/Rails - 获取数组中的最后两个值
【发布时间】:2017-05-29 20:21:11
【问题描述】:

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

@numbers.last 会给我 8 个

我需要获取最后两条记录。到目前为止,我已经尝试过了,但是它抛出了 NoMethodError:

@numbers.last - 1

【问题讨论】:

    标签: ruby-on-rails ruby


    【解决方案1】:

    last 接受一个参数:

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

    如果要删除最后两项:

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

    【讨论】:

    • +1,这是我总是因为某种原因完全忘记的东西,虽然它读起来比索引版本友好得多......
    【解决方案2】:

    数组是使用[] 而不是{} 定义的。你可以使用负索引和范围来做你想做的事:

    >> @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]
    

    【讨论】:

    • 需要注意的是,范围以负边界FAIL开头,如果数组包含的项目数少于给定数量,那么:@numbers[-9..-1] #=> nil,而不是返回现有的8个元素。 last 在这方面表现得更好。 @numbers.last(9) 将返回 8 元素数组。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-14
    • 2012-01-28
    • 2017-07-11
    • 1970-01-01
    • 1970-01-01
    • 2023-02-22
    相关资源
    最近更新 更多