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)
但它不起作用.
这个问题与可能的重复有所不同,因为它处理相应数组中元素的存在,并且此处不存在哈希.
它非常有效:
? 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)