如果存在类似的值,我如何删除先前的数组值?下面是我使用的代码:
def address_geo
arr = []
arr << do if do
arr << re if re
arr << me if me
arr << fa if fa
arr << so if so
arr << la if la
arr.reject{|y|y==''}.join(' ')
end
给定以下值
do = 'I'
re = 'am'
me = 'a'
fa = 'good'
so = 'good'
la = 'boy'
上述方法将产生:
I am a good good boy
我该如何写数组合并来拒绝fa
,只接受so
来产生:
I am a good boy
多谢!
可以使用array# uniq
> arr = ['good', 'good']
> arr.uniq
=> ['good']
根据@tokland的建议,如果你只想删除连续的重复,这将工作(并支持ruby 1.8)。通过使用inject
构建一个新的数组,我们可以过滤掉empty?
或与前一个字符串相同的每个字符串。
> %w(a good good boy).inject([]) do |mem, str|
> mem << str if !str.empty? && mem[-1] != str
> mem
> end
=> ['a', 'good', 'boy']
你可以用Enumerable#chunk:
删除数组中连续的元素strings = ["hi", "there", "there", "hi", "bye"].select { |x| x && !x.empty? }
strings.chunk { |x| x }.map(&:first).join(" ")
#=> "hi there hi bye"