Method: Array#delete_values_at
- Defined in:
- lib/core/facets/array/delete_values.rb
#delete_values_at(*selectors) ⇒ Object
Delete multiple values from array given indexes or index range.
a = [1,2,3,4]
a.delete_values_at(1,2) #=> [2,3]
a #=> [1,4]
a = [1,2,3,4]
a.delete_values_at(0..2) #=> [1,2,3]
a #=> [4]
NOTE: It would be nice to see #delete_at incorporate this funcitonaility.
CREDIT: Trans
32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 |
# File 'lib/core/facets/array/delete_values.rb', line 32 def delete_values_at(*selectors) idx = [] selectors.each{ |i| case i when Range idx.concat( i.to_a ) else idx << i.to_i end } idx.uniq! dvals = values_at(*idx) idx = (0...size).to_a - idx self.replace( values_at(*idx) ) return dvals end |