如何更优雅地删除Ruby Array的所有元素中的重复项?
我想删除Array
对象中的重复项。 最好用一个例子来解释。
我有以下Array
entries = ["abc", "ab", "c", "cd"]
我想要一个方法,通过从Array
元素中删除重复项来清除它,并返回一个Array
,每个唯一项都有一个元素。
所以这是我写的方法来做到这一点:
class Array def clean_up() self.join(" ").split(" ").uniq end end
所以现在当我调用entries.clean_up
我得到以下结果:
["a", "b", "c", "d"]
这正是我想要的结果,但是在Ruby中有更优雅的方法吗?
默认情况下拆分空格上的拆分(当然,假设您没有像改变$;
那样做一些疯狂的事情)。 您希望拆分每个字符串并将结果展平为一个列表,只要您想要“对每个元素执行X并展平”您想要使用flat_map
。 将这些放在一起产生:
self.flat_map(&:split).uniq
如果您只想分隔空格或不想依赖理智,那么您可以:
self.flat_map { |s| s.split(' ') }.uniq
或类似的。