ruby - 数组数组中的唯一元素

标签 ruby arrays

我想通过内部数组中的第一个元素从数组数组中找到唯一元素。

例如

a = [[1,2],[2,3],[1,5]

我想要类似的东西

[[1,2],[2,3]]

最佳答案

uniq方法需要一个 block :

uniq_a = a.uniq(&:first)

或者如果您想就地进行:

a.uniq!(&:first)

例如:

>> a = [[1,2],[2,3],[1,5]]
=> [[1, 2], [2, 3], [1, 5]]
>> a.uniq(&:first)
=> [[1, 2], [2, 3]]
>> a
=> [[1, 2], [2, 3], [1, 5]]

或者

>> a = [[1,2],[2,3],[1,5]]
=> [[1, 2], [2, 3], [1, 5]]
>> a.uniq!(&:first)
=> [[1, 2], [2, 3]]
>> a
=> [[1, 2], [2, 3]]

如果您在 1.8.7 版本中遇到 uniq 不占用 block 的情况,那么您可以这样做:

a.group_by(&:first).values.map(&:first)

例如:

>> a = [[1,2],[2,3],[1,5]]
=> [[1, 2], [2, 3], [1, 5]]
>> a.group_by(&:first).values.map(&:first)
=> [[1, 2], [2, 3]]

感谢您的额外督促 Jin .

关于ruby - 数组数组中的唯一元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7657848/

相关文章:

ruby - Ruby中的高阶迭代器?

c - C 中的二维数组是否可以按升序排序?如果是这样,怎么办?

python - 从字符串列表实例化两个 2D numpy 数组

java - 字符串数组大小被修改

ruby-on-rails - 部署 Rails 应用程序

ruby-on-rails - 带有 cron 的可安装引擎(每当 gem 时)

ruby - 使用 ruby​​ 在 CSV 中格式化数据

arrays - 如何随机选择一个变量并找到其属性

Java byte[] 到 String 分配给 String 时不起作用

ruby - 如何根据另一个数组中的并行值对一个数组中的数据进行分组?