【问题标题】:ruby remove duplicates from multidimensional arrayruby 从多维数组中删除重复项
【发布时间】:2014-05-26 14:19:51
【问题描述】:

尝试创建一组名称的每个排列,并将它们成对放置到多维数组中,然后删除所有重复项。我遇到的问题是遍历数组,比较两个值,如果它们相同则删除该数组。

names = ["Bob", "Dave", "Clive"]
names2 = names.repeated_combination(2).to_a
[["Bob", "Bob"], ["Bob", "Dave"], ["Bob", "Clive"], ["Dave", "Dave"], ["Dave", "Clive"],     ["Clive", "Clive"]]

这应该返回一组唯一的多维数组

names2.each { |x| x.delete_if { |y| y.slice(0) == y.slice(1) }}

但它返回与以前相同的数组,其中包含重复项。 我尝试在几个地方添加“uniq”,但没有任何区别。

【问题讨论】:

  • 只是提到预期的输出......你想删除["Bob", "Bob"]作为重复吗?
  • 为什么不试试names.combination(2).to_a

标签: ruby arrays multidimensional-array iteration uniq


【解决方案1】:

我愿意:

names = ["Bob", "Dave", "Clive"]
names.combination(2).to_a
# => [["Bob", "Dave"], ["Bob", "Clive"], ["Dave", "Clive"]]

并更正您的代码:-

non_uniq_comb = names.repeated_combination(2).reject { |a,b| a == b }
# => [["Bob", "Dave"], ["Bob", "Clive"], ["Dave", "Clive"]]

【讨论】:

  • 是的,谢谢,不再需要额外的行来对重复项进行排序!
【解决方案2】:

如果你想删除同名的数组:

(names2.map { |n| n if n[0] != n[1]}).compact

【讨论】:

    猜你喜欢
    • 2018-07-26
    • 2012-12-14
    • 2021-02-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-06
    • 1970-01-01
    • 2017-07-23
    相关资源
    最近更新 更多