Ruby逻辑运算符 - 一个但不是两个数组中的元素

Mic*_*ael 7 ruby arrays logical-operators

假设我有两个数组:

a = [1,2,3]
b = [1,2]
Run Code Online (Sandbox Code Playgroud)

我希望在这两个数组上执行逻辑运算,返回不在两个数组中的元素(即3).谢谢!

Ser*_*sev 14

Ruby中的数组非常方便地重载一些数学和按位运算符.

a但不在的元素b

 a - b # [3]
Run Code Online (Sandbox Code Playgroud)

a和中的元素b

 a & b # [1, 2]
Run Code Online (Sandbox Code Playgroud)

a或的元素b

 a | b # [1, 2, 3]
Run Code Online (Sandbox Code Playgroud)

数组之和(串联)

 a + b # [1, 2, 3, 1, 2]
Run Code Online (Sandbox Code Playgroud)

你明白了.


ste*_*lag 9

p (a | b) - (a & b) #=> [3]
Run Code Online (Sandbox Code Playgroud)

或者使用套装

require 'set'
a.to_set ^ b
Run Code Online (Sandbox Code Playgroud)

  • (a | b) - (a&b)是正确的答案.a-b的问题在于它是特定于订单的.b - a给出[]的不同结果. (4认同)