尝试创建一组名称的每个排列,并将它们作为成对放入多维数组中,然后删除任何重复项。我遇到的问题是迭代数组,比较两个值并删除该数组是否相同。
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',但没有区别。
答案 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"]]