在Ruby on Rails中删除数组的交替元素

3
假设我有以下数组

可能是重复问题:
Ruby数组中的奇数(或偶数)项

假设我有以下数组

arr = ["Value0","Value1","Value2","Value3","Value4","Value5","Value6","Value7","Value8"]

我希望删除备用元素,以便我的输出数组类似于以下内容。
["Value0", "Value2", "Value4", "Value6", "Value8"]

即应该删除奇数位置上的元素。
4个回答

9
我认为这不是最快的方法,但你可以这样做。
>> arr.reject {|v| arr.index(v).odd?}
#=> ["Value0", "Value2", "Value4", "Value6", "Value8"]

或者

>> arr.each_slice(2).map(&:first)
#=> ["Value0", "Value2", "Value4", "Value6", "Value8"]

1
arr.each_slice(2).map(&:first) 是第二个版本的更好的实现。 - mu is too short
当然!我会更改它,谢谢。 - oldergod

6
arr.reject!.with_index{|_, i| i.odd?}

或者

arr.select!.with_index{|_, i| i.even?}

不错啊。我不知道你能做到那个。 - oldergod

2
arr = ["Value0","Value1","Value2","Value3","Value4","Value5","Value6","Value7","Value8"]
flag = false
p arr.select!{flag = !flag}
#=> ["Value0", "Value2", "Value4", "Value6", "Value8"]

0
arr1 = arr.clone
arr.each_with_index {|el,index| arr1.delete_at(index) if index % 2 > 0 }

或者

arr1 = []
arr.each_with_index {|el,index| arr1 << el if index % 2 == 0}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接