ruby-on-rails 合并两个数组并删除重复的值

wj8zmpe1  于 2023-02-26  发布在  Ruby
关注(0)|答案(7)|浏览(172)

我有两个数组

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

b = [2, 4, 6]

我想合并两个数组,然后删除与其他数组相同的值。结果应该是:

c = [1, 3, 5, 6]

我试过将两个数组相减,结果是[1,3,5]。我还想从第二个数组中获取值,该数组与第一个数组没有重复。

ycggw6v2

ycggw6v21#

使用Array#uniq

a = [1, 3, 5, 6]
b = [2, 3, 4, 5]

c = (a + b).uniq
=> [1, 3, 5, 6, 2, 4]
gk7wooem

gk7wooem2#

您可以执行以下操作!

# Merging
c = a + b
 => [1, 2, 3, 4, 5, 2, 4, 6]
# Removing the value of other array
# (a & b) is getting the common element from these two arrays
c - (a & b)
=> [1, 3, 5, 6]

德米特里的评论也是一样的,虽然我想出了我的想法独立。

jbose2ul

jbose2ul3#

使用|

a = [1, 2, 3, 4, 5]
b = [2, 4, 6]

合并但不复制值

a | b 
# => [1, 2, 3, 4, 5, 6]

仅获取重复值

a & b
# => [2, 4]

合并并删除重复的值。这意味着获取所有唯一值并减去所有重复值。

(a | b) - (a & b)
# => [1, 3, 5, 6]

Ruby文档

j13ufse2

j13ufse24#

不如这样吧

(a | b)
=> [1, 2, 3, 4, 5, 6]
(a & b)
=> [2, 4]

(a | b) - (a & b)
[1, 3, 5, 6]

|方法文档
&方法文档

utugiqy6

utugiqy65#

我们有两个数组

p = [1, 2, 5, 4, 8, 9]
q = [5, 6, 4, 8, 5, 3]

(p+q).uniq or (p.concat(q)).uniq

=> [1, 2, 5, 4, 8, 9, 6, 3]

p|q也可以完成这项工作!决定哪一个适合你。
根据上述要求
(p | q) - (p & q)可以完成这项工作。

smdncfj3

smdncfj36#

可能有点明显,但是如果你想把一个数组中的一堆数组组合起来,你可以这样做:
[[1 2],[2],[3]].求和唯一性=〉[1,2,3]

4nkexdtk

4nkexdtk7#

Set.new([1,2,3]+[1,4,5])怎么样?它返回[1,2,3,4,5]

相关问题