我想从另一个数组中包含的数组中删除一些元素。
在Java中执行此操作的方法是:
myArray.removeAll(anotherArray)
此代码会从anotherArray
中删除myArray
中包含的元素。
是否有从myArray
删除anotherArray
INTERSECTION myArray
中包含的元素的内容?
答案 0 :(得分:8)
是的,这是the -
operator(真正Array#-
方法)的用途:
a = [1, 2]
b = [2]
a - b
# => [1]
答案 1 :(得分:0)
在Ruby中有多种方法可以做到这一点,但最常见的是调用数组差异方法Array#-
。该方法的文档说:
返回一个新数组,该数组是原始数组的副本,删除也出现在other_ary中的所有项。订单将从原始数组中保留。
它使用hash和eql来比较元素?提高效率的方法。
[ 1, 1, 2, 2, 3, 3, 4, 5 ] - [ 1, 2, 4 ] #=> [ 3, 3, 5 ]
如果您需要类似集合的行为,请参阅库类Set。
减号看起来像一个运算符,但实际上是对第一个Array对象的方法调用。显然,如果你正在使用Set对象而不是数组,你也可以查看Set#difference
。