ruby - 如何更优雅地删除 Ruby 数组所有元素中的重复项?

标签 ruby arrays

我想删除 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/

相关文章:

javascript - 用输入字段 Javascript/Angular2 替换某些单词

ruby - 法拉第获取请求参数

ruby - 设置 Qt::MainWindow

ruby-on-rails - 在 RSpec 中使用 let 和 subject 时未定义的方法响应

ruby-on-rails - 未定义的方法 `each' 为假 :FalseClass

javascript - 在javascript对象中平面数组的函数式编程方法

ruby-on-rails - Rails 中的预加载多态关联(包括清晰的代码示例)

java - 给定一个整数数组,查找并递增具有Java中总数组最低总和的重复值?

java - 检查字符串是否仅包含字母 - 电子邮件验证

c - 二维数组中值滤波