鉴于数组:
arr = ['a','a','b','b','b','a','c']
Run Code Online (Sandbox Code Playgroud)
Ruby 中是否有一种快速方法可以删除重复的连续元素,但并非所有重复元素(如 arr.uniq)都会删除?预期输出将是:
['a','b','a','c']
Run Code Online (Sandbox Code Playgroud)
这是我尝试过的。可以按如下方式遍历 Array,但是在 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
Run Code Online (Sandbox Code Playgroud)
试试这个
arr.chunk_while(&:==).map(&:first)
Run Code Online (Sandbox Code Playgroud)
第一步,arr.chunk_while(&:==)制作一个由等值数组组成的数组。您可以使用 看到第一步的结果arr.chunk_while(&:==).to_a。第二步,map(&:first)取每个子阵列的第一项,最后将这个 n 子阵列阵列展平。