Ruby - 合并两个数组并删除具有重复的值

use*_*760 26 ruby arrays ruby-on-rails

我有两个数组

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

b = [2, 4, 6]
Run Code Online (Sandbox Code Playgroud)

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

c = [1, 3, 5, 6]
Run Code Online (Sandbox Code Playgroud)

我试过减去两个数组,结果是[1,3,5].我还想从第二个数组中获取第一个数组中没有重复的值.

EJA*_*JAg 28

使用Array#uniq.

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

c = (a + b).uniq
=> [1, 3, 5, 6, 2, 4]
Run Code Online (Sandbox Code Playgroud)

  • `我想合并两个数组,然后删除与其他数组相同的值.这是问题陈述......在这种情况下,你的解决方案不起作用. (2认同)
  • @Abhinay这个解决方案是正确的.这只是一种不同的方法.除非性能更差,否则它比接受的答案更明显. (2认同)

Rub*_*der 21

你可以做到以下几点!

# 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]
Run Code Online (Sandbox Code Playgroud)

Dmitri的评论也是一样的,尽管我独立提出了自己的想法.

  • 您应该引用@Dmitry的早期注释,因为它构成了您回答的基础(即使您是独立提出的)。 (2认同)

iro*_*and 15

这个怎么样.

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

(a | b) - (a & b)
[1, 3, 5, 6]
Run Code Online (Sandbox Code Playgroud)

文档|的方法
对文档&的方法


nor*_*raj 5

Array#uniq

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

a|b
=> [1, 3, 5, 6, 2, 4]
Run Code Online (Sandbox Code Playgroud)

资源

  • 就是这个。 (3认同)