Implement `Array#union` which is introduced in Ruby2.6.

parent dd346be9
......@@ -137,6 +137,25 @@ class Array
ary.uniq! or ary
end
##
# call-seq:
# ary.union(other_ary,...) -> new_ary
#
# Set Union---Returns a new array by joining this array with
# <i>other_ary</i>, removing duplicates.
#
# ["a", "b", "c"].union(["c", "d", "a"], ["a", "c", "e"])
# #=> ["a", "b", "c", "d", "e"]
#
def union(*args)
ary = self.dup
args.each_with_index do |x,i|
ary.concat(x)
ary.uniq! if i % 20 == 0
end
ary.uniq! or ary
end
##
# call-seq:
# ary & other_ary -> new_ary
......
......@@ -75,6 +75,14 @@ assert("Array#|") do
assert_equal [1, 2, 3, 1], a
end
assert("Array#union") do
a = [1, 2, 3, 1]
b = [1, 4]
c = [1, 5]
assert_equal [1, 2, 3, 4, 5], a.union(b,c)
end
assert("Array#&") do
a = [1, 2, 3, 1]
b = [1, 4]
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment