Discriminate first and last element in each?

前端 未结 3 1815
借酒劲吻你
借酒劲吻你 2021-02-09 03:29
@example.each do |e|
  #do something here
end

Here I want to do something different with the first and last element in each, how should I achieve this?

3条回答
  •  悲哀的现实
    2021-02-09 03:53

    You can use each_with_index and then use the index to identify the first and last items. For example:

    @data.each_with_index do |item, index|
      if index == 0
        # this is the first item
      elsif index == @data.size - 1
        # this is the last item
      else
        # all other items
      end
    end
    

    Alternately, if you prefer you could separate the 'middle' of the array like so:

    # This is the first item
    do_something(@data.first)
    
    @data[1..-2].each do |item|
      # These are the middle items
      do_something_else(item)
    end
    
    # This is the last item
    do_something(@data.last)
    

    With both these methods you have to be careful about the desired behaviour when there are only one or two items in the list.

提交回复
热议问题