如何使用Ruby基于另一个数组对一个数组进行排序

Ark*_*koD 0 ruby arrays sorting

有两个数组:

A = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] 
B = [3, 4, 1, 5, 2, 6]
Run Code Online (Sandbox Code Playgroud)

我想以一种B方式排序,对于B存在的所有元素A,按照数组中的顺序对元素进行排序A.

所需的排序结果将是

B #=> [1, 2, 3, 4, 5, 6]
Run Code Online (Sandbox Code Playgroud)

我试过这样做

B = B.sort_by { |x| A.index }
Run Code Online (Sandbox Code Playgroud)

但它不起作用.

这个问题与可能的重复有所不同,因为它处理相应数组中元素的存在,并且此处不存在哈希.

Ale*_*kin 7

它非常有效:

? A = [1,3,2,6,4,5,7,8,9,10]
? B = [3,4,1,5,2,6]
? B.sort_by &A.method(:index)
#? [1, 3, 2, 6, 4, 5]
Run Code Online (Sandbox Code Playgroud)

如果可能B存在不存在的元素A,请使用:

? B.sort_by { |e| A.index(e) || Float::INFINITY }
Run Code Online (Sandbox Code Playgroud)