如果
例如:我想从该数组中删除索引范围为
提前感谢。
array=[1,2,3,4,5,6,7,8,9]
,我想从数组中删除一系列元素。例如:我想从该数组中删除索引范围为
2..5
的所有元素,结果应为[1, 2, 7, 8, 9]
。提前感谢。
使用slice!
方法:
删除由区间指定的元素。
array = [1, 2, 3, 4, 5, 6, 7, 8, 9]
array.slice!(2..5)
array #=> [1, 2, 7, 8, 9]
2
而不包括 5
吗? - Roman Kiselenko[1, 2, 3, 4, 5, 6, 7, 8, 9].reject.with_index{|element,index| index >= 2 && index <= 5}
=> [1, 2, 7, 8, 9]
或者使用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]
正如Stefan所说,使用slice!
来删除数组中特定范围内的值。然而,如果你需要删除在某个特定范围内的值,则使用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]
其中一种方法是使用带有块的Array#delete_if调用,该块检查数组的每个元素是否包含在范围内,使用Array#include?。例如:
array = [1, 2, 3, 4, 5, 6, 7, 8, 9]
array.delete_if { |i| (2..5).include? i }
#=> [1, 6, 7, 8, 9]
如果您想通过索引而不是值来删除元素,一个解决方法是遍历您的范围对象,并为范围中的每个索引调用Array#delete_at。例如:
array = [1, 2, 3, 4, 5, 6, 7, 8, 9]
(2..5).map { |i| array.delete_at i }
##=> [3, 5, 7, 9]