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



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

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",但没有什么区别。

我会这么做:

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"]]

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

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

相关内容

  • 没有找到相关文章

最新更新