鉴于数组:
arr = ['a','a','b','b','b','a','c']
Ruby中是否有一种快速删除重复连续元素的方法,但并非像arr.uniq这样的所有重复元素?预期的输出是:
['a','b','a','c']
这是我尝试过的。可以按如下方式迭代数组,但在Ruby中最简单的方法是什么?
def remove_repeats arr
new_arr = []
last_element = nil
arr.each do |x|
if last_element != x
new_arr << x
end
last_element = x
end
new_arr
end
arr = ['a','a','b','b','b','a','c','c']
puts remove_repeats(arr).join(',')
# => a,b,a,c
答案 0 :(得分:4)
试试这个
arr.chunk_while(&:==).map(&:first)
第一步,arr.chunk_while(&:==)
,生成一个数值相等的数组'。您可以使用arr.chunk_while(&:==).to_a
查看第一步的结果。第二步,map(&:first)
,获取每个子数组的第一项,最后它展平这个n子阵列。
答案 1 :(得分:0)
尝试arr.uniq!
,它会删除所有重复项。