我想从Array
中删除一个值并保留它,如下所示:
a = [1, 2, 3, 4]
=> [1, 2, 3, 4]
a.delete_at(2)
=> 3
a
=> [1, 2, 4]
如何在不破坏变量的情况下获取[1, 2, 4]
?
答案 0 :(得分:3)
有两种方法可以做,不可否认,它们看起来并不优雅:
a[0..1] + a[3..-1]
# => [1, 2, 4]
a.dup.tap { |x| x.delete_at(2) }
# => [1, 2, 4]
a.values_at(0..1, 3..-1)
# => [1, 2, 4]
就个人而言,我认为最能传达你意图的方式是:
a.reject.with_index { |_, i| i == 2 }
# => [1, 2, 4]