用于在Ruby中包含相同值的大型数组对小数组进行排序的单行程序?

时间:2011-04-19 23:55:07

标签: ruby arrays sorting

假设我有2个这样的数组:

# base set
a = [1, 2, 3, 4, 5, 6, 7, 8, 9]

# sub set
b = [5, 1, 8, 3]

b排序为与a相同的订单的最佳方式是什么?

a.sort_like(b) #=> [1, 3, 5, 8]

这个操作叫什么?

3 个答案:

答案 0 :(得分:11)

我认为这就是你想要的:

a & b

答案 1 :(得分:1)

这样做,我不确定最有效的方式。

def sort_like(other)
  items = []
  other.each do |find|
    each do |item|
      items.append item if item == find
    end
  end
  items
end

答案 2 :(得分:-1)

如果b是a的子集,正如您所定义的那样,那么结果将始终是b 的排序版本。在这种情况下,你只需要b.sort(它不会改变b,它将返回一个新的数组,其中包含b的排序内容。)