顺序数组取决于外观在另一个



假设我有两个用户数组

[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)

相关内容

最新更新