jks*_*hah 8 arrays sorting perl
我有一个包含所有可能元素的引用数组,并按自定义顺序排序,而不是字母数字排序.例如,
@ref_array = ('one','two','three','four','five','six');
Run Code Online (Sandbox Code Playgroud)
现在所有输入数组都需要根据引用数组的顺序进行排序.输入数组将始终是引用数组的子集.
@in1 = ('three','one','five'); # Input
@out1 = ('one','three','five'); # Desired Output
@in2 = ('six','five','four','three','two','one'); # Input
@out2 = ('one','two','three','four','five','six') # Desired Output
Run Code Online (Sandbox Code Playgroud)
Сух*_*й27 10
my %h = map { $ref_array[$_] => $_ } 0 .. $#ref_array;
my @out1 = @ref_array[ sort { $a <=> $b } @h{@in1} ];
my @out2 = @ref_array[ sort { $a <=> $b } @h{@in2} ];
Run Code Online (Sandbox Code Playgroud)
%h保持key => val对,如one=> 0,two=> 1等.
@h{@in1}是2,0,4散列切片,并且数组切片@ref_array[0,2,4]是one, three, five