我想删除 Array
对象中的重复项目。最好举例说明。
我有以下数组
entries = ["a b c", "a b", "c", "c d"]
我想要一种方法,通过从 Array
中的元素中删除重复项来清理它,并返回一个 Array
,每个唯一项都有一个元素。
所以这是我为此编写的方法:
class Array
def clean_up()
self.join(" ").split(" ").uniq
end
end
所以现在当我调用 entries.clean_up
时,我得到以下结果:
["a", "b", "c", "d"]
这正是我想要的结果,但是在 Ruby 中有更优雅的方法吗?
最佳答案
split
默认情况下在空白处拆分(当然假设您没有做过像更改 $;
这样疯狂的事情)。你想拆分每个字符串并将结果展平到一个列表中,任何时候你想“对每个元素执行 X 并展平”你想使用 flat_map
.将它们放在一起产生:
self.flat_map(&:split).uniq
如果您只想按空格拆分或不想依赖理智,那么您可以:
self.flat_map { |s| s.split(' ') }.uniq
或类似的。
关于ruby - 如何更优雅地删除 Ruby 数组所有元素中的重复项?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26317653/