如何在不破坏的情况下保留`delete_at`

时间:2014-12-13 07:31:15

标签: ruby arrays

我想从Array中删除一个值并保留它,如下所示:

a = [1, 2, 3, 4]
=> [1, 2, 3, 4]
a.delete_at(2)
=> 3
a
=> [1, 2, 4]

如何在不破坏变量的情况下获取[1, 2, 4]

1 个答案:

答案 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]