ruby从多维数组中删除重复项

时间:2014-04-12 10:44:51

标签: ruby arrays multidimensional-array iteration uniq

尝试创建一组名称的每个排列,并将它们作为成对放入多维数组中,然后删除任何重复项。我遇到的问题是迭代数组,比较两个值并删除该数组是否相同。

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',但没有区别。

2 个答案:

答案 0 :(得分:0)

如果要删除具有相同名称的数组:

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

答案 1 :(得分:0)

我愿意:

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"]]
相关问题