我有两个数组
ordered = [1, 2, 3, 4, 5]
some_list = [2, 6, 4]
我想要比较两个数组,然后找出重复的元素,并将它们组成一个新的数组。关键在于保持数组的顺序与
ordered
数组中提供的顺序相同。new_array = [2, 4] # Result should be this
我想到了一种方法来解决这个问题,但是我认为性能可以更好。
ordered.each do |value1|
some_list.include? value1
new_array << value1
end
end
有什么方法可以改进这个吗?
基准测试结果
user system total real
using & 0.210000 0.000000 0.210000 ( 0.212070)
using select 0.220000 0.000000 0.220000 ( 0.218889)
new_array = ordered & some_list
,因此它会保留在ordered
数组中定义的顺序。新数组中元素的顺序取决于第一个数组。 - Iuri G.