How to delete a range of values from an array?

前端 未结 5 1949
走了就别回头了
走了就别回头了 2021-01-02 07:46

If array = [1, 2, 3, 4, 5, 6, 7, 8, 9], I want to delete a range of elements from array.

For example: I want to delete all elements with an index in th

相关标签:
5条回答
  • 2021-01-02 08:07

    You can try this

    [1, 2, 3, 4, 5, 6, 7, 8, 9].reject.with_index{|element,index| index >= 2 && index <= 5}
    => [1, 2, 7, 8, 9]
    

    or use delete_if

    [1, 2, 3, 4, 5, 6, 7, 8, 9].delete_if.with_index{|element,index| index >= 2 && index <= 5}
    => [1, 2, 7, 8, 9]
    
    0 讨论(0)
  • 2021-01-02 08:09

    Use slice!:

    Deletes the element(s) given by [...] a range.

    array = [1, 2, 3, 4, 5, 6, 7, 8, 9]
    array.slice!(2..5)
    array #=> [1, 2, 7, 8, 9]
    
    0 讨论(0)
  • 2021-01-02 08:10

    Delete Array Elements by Index from Range

    If you are trying to delete elements by index rather than by value, one way to solve this is to iterate over your Range object, invoking Array#delete_at for each index in the range. For example:

    array = [1, 2, 3, 4, 5, 6, 7, 8, 9]
    (2..5).map { |i| array.delete_at i }
    ##=> [3, 5, 7, 9]
    
    0 讨论(0)
  • 2021-01-02 08:21

    As Stefan posted, use slice! to remove values located inside a certain range in the array. If what you need, however, is to remove values that are within a certain range use delete_if.

    array = [9, 8, 7, 6, 5, 4, 3, 2, 1]
    array.delete_if {|value| (2..5) === value }
    array  #=> [9, 8, 7, 6, 1]
    
    0 讨论(0)
  • 2021-01-02 08:24

    Delete When Range Includes Value

    One of the many ways to do this is to invoke Array#delete_if with a block that checks whether each element of the Array is included in the Range with Array#include?. For example:

    array = [1, 2, 3, 4, 5, 6, 7, 8, 9]
    array.delete_if { |i| (2..5).include? i }
    #=> [1, 6, 7, 8, 9]
    
    0 讨论(0)
提交回复
热议问题