说我有一个数组:[1, 2, 3, 4, 5]
。
给定另一个数组(例如[2, 4]
),我想要一个新的数组(或修改的初始数组,并不重要),如下所示:[1, 3, 5, 2, 4]
。因此,选定的元素将移动到数组的末尾。
推回元素非常简单,但如何从数组中弹出特定元素?
答案 0 :(得分:7)
a = [1, 2, 3, 4, 5]
b = [2, 4]
(a - b) + (b & a)
#=> [1, 3, 5, 2, 4]
a - b
是a
中的元素,但不是b
中的元素,而b & a
是两个数组中常见的元素。达到预期的效果。
答案 1 :(得分:1)
如果a
中的元素不是uniq(如eugen所述),并且从b
中删除一个元素非常重要,那么您可以执行以下操作:
a = [1, 2, 3, 2, 4, 5, 4, 2]
b = [2, 4, 7]
p (b&a).unshift(a.map{|el|
b.include?(el) ? begin b = b -[el]; nil end : el
}.compact).flatten
#=> [1, 3, 2, 5, 4, 2, 2, 4]