【问题标题】:delete alternate elements of an array in ruby on rails [duplicate]在ruby on rails中删除数组的备用元素[重复]
【发布时间】:2012-09-05 04:16:04
【问题描述】:

可能重复:
Odd ( or even ) entries in a Ruby array

假设我有一个以下数组

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

我想删除备用元素,这样我的 o/p 数组就会像下面一样

["Value0", "Value2", "Value4", "Value6", "Value8"]

即它应该删除奇数位置的元素。

【问题讨论】:

    标签: ruby-on-rails ruby arrays ruby-on-rails-3


    【解决方案1】:

    我觉得这不是最快的方法,但你可以这样做

    >> arr.reject {|v| arr.index(v).odd?}
    #=> ["Value0", "Value2", "Value4", "Value6", "Value8"]
    

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

    【讨论】:

    • arr.each_slice(2).map(&:first) 是第二个更好的版本。
    • 绝对!我会改的,谢谢。
    【解决方案2】:
    arr.reject!.with_index{|_, i| i.odd?}
    

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

    【讨论】:

    • 不错的一个。我不知道你能做到。
    【解决方案3】:
    arr = ["Value0","Value1","Value2","Value3","Value4","Value5","Value6","Value7","Value8"]
    flag = false
    p arr.select!{flag = !flag}
    #=> ["Value0", "Value2", "Value4", "Value6", "Value8"]
    

    【讨论】:

      【解决方案4】:
      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}
      

      【讨论】:

        猜你喜欢
        • 2017-10-27
        • 2012-01-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多