假设我有两个用户数组
[user1, user2, user3]
[user3]
基于第二个数组,我想对第一个数组进行排序,以便第二个数组中的内容首先出现在第一个数组中。
那么第一个数组的结果将是:
[user3, user1, user2]
我意识到简单的方法是迭代第一个数组并填充一个空数组,如果第二个数组包含它,则对其排序,然后合并其余部分。下面是伪代码,未经测试,但给出了一个想法,我想作为一个简单的解决方案
return_array = []
array1.each do |a|
if array2.include? a
return_array.push array1.pop(a)
end
end
return_array.merge array1
有什么方法可以改进这个吗?内置的rails或ruby方法,例如
应该使用数组交集和数组差异:
a&b + a-b
会给你想要的。十字路口使用手册:http://ruby-doc.org/core-2.2.0/Array.html#method-i-26差异手册:http://ruby-doc.org/core-2.2.0/Array.html#method-i-2D
你可以这样做:
array2 + (array1 - array2)
my_array = ['user1', 'user2', 'user3']
my_array2 = ['user3']
my_array2 + (my_array.sort - my_array2)