【问题标题】:Create a two separate arrays from existing array in ruby从 ruby​​ 中的现有数组创建两个单独的数组
【发布时间】:2014-05-26 11:59:59
【问题描述】:

我有一个array of n元素说

snaps = ["s-1","s-2","s-3","s-4",..."s-n-2","s-n-1","s-n"] 

现在我想创建两个 diff 数组,一个数组包含最后 5 个元素,另一个包含剩余元素。例如

snap1 = ["s-1","s-2","s-3","s-4",...]
snap2 = ["s-n-5","s-n-3","s-n-2","s-n-1","s-n"] 

我该怎么做。

【问题讨论】:

    标签: ruby ruby-1.9.3


    【解决方案1】:
    snap1 = snaps.dup
    snap2 = snap1.pop(5)
    

    【讨论】:

      【解决方案2】:
      snap2 = snaps[-5, 5]
      

      或者

      snap2 = snaps.last(5) # As suggested my BroiSatse
      

      会给你一个包含最后 5 个元素的数组

      剩下的,你可以做

      snap1 = snaps[0..-6]
      

      【讨论】:

      • 您可以改用.last(5)。另请注意,如果数组有重复,减法将删除所有重复的元素。
      • 是的!感谢您的提示
      • snap1 = snaps - snap2snaps 包含重复条目的情况下可能会产生错误的结果。
      【解决方案3】:

      您可以使用slice! 创建两个数组:

      snaps = ["s-1","s-2","s-3","s-4","s-n-5","s-n-3","s-n-2","s-n-1","s-n"] 
      
      snap2 = snaps.slice!(-5..-1)
      # => ["s-n-5", "s-n-3", "s-n-2", "s-n-1", "s-n"] 
      
      snaps
      # => ["s-1", "s-2", "s-3", "s-4"]
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-08-25
        • 1970-01-01
        • 2022-07-30
        • 1970-01-01
        • 2012-12-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多