【问题标题】:How to split an array on duplicate elements in Ruby如何在Ruby中的重复元素上拆分数组
【发布时间】:2020-07-13 13:59:59
【问题描述】:

假设可以有具有连续重复元素的数组,我正在寻找一种方法来转换这个数组:

['A', 'B', 'C', 'C', 'D', 'D', 'F']

进入这个:

[['A', 'B', 'C'], ['C', 'D'], ['D','F']]

请注意,对于我的特殊情况,一个数组不能有超过 2 个连续的重复元素。

【问题讨论】:

  • 您的问题不清楚。你会如何拆分%w[a b b b c]?您尝试过什么,为什么对您不起作用?
  • 对。是的。请假设您不能有超过 2 个连续的重复元素。措辞固定。

标签: arrays ruby


【解决方案1】:

Enumerable#slice_when 会这样做。

arr = ['A', 'B', 'C', 'C', 'D', 'D', 'F']
p arr.slice_when{|a,b| a==b}.to_a

# =>[["A", "B", "C"], ["C", "D"], ["D", "F"]]

【讨论】:

  • 您应该编辑您的答案并在此处包含替代表格。 :)
【解决方案2】:
arr = ['A', 'B', 'C', 'C', 'D', 'D', 'F']

arr.chunk_while(&:!=).to_a
  #=> [["A", "B", "C"], ["C", "D"], ["D", "F"]]

Enumerable#chunk_while

老套路:

arr.each_with_object([[]]) do |s,a|
  if s == a.last.last
    a << [s]
  else
    a.last << s
  end
end
  #=> [["A", "B", "C"], ["C", "D"], ["D", "F"]]

【讨论】:

    猜你喜欢
    • 2011-02-11
    • 2017-10-26
    • 2018-05-19
    • 2010-10-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多