对数组数组进行排序的最佳方法?

问题描述 投票:0回答:1

我需要对数组的数组进行排序;

.sort
方法似乎可以通过 默认。但是按不同索引排序的好方法是什么 内部数组?

要排序的数组是外部较大数组:(生日格式为“mmddyy”)

my @allRecords = [ [birthday1 firstName1 lastName1 [data1]
                   [birthday2 firstName2 lastName2 [data2] 
                   ...
                   [birthdayN firstNameN lastNameN [dataN] ];

@allRecords.sort by itself sorts by birthdays. 

按名字或姓氏或内部数组内的数据排序的更好方法是什么?

arrays sorting raku indices
1个回答
9
投票

sort
方法采用 sub 作为可选参数。如果其arity为1,则使用返回值作为比较操作数;如果其数量为 2,您可以通过返回
Less
Same
More
之一来手动进行元素之间的比较。

根据您的示例,我们可以按名字排序:

@allRecords.sort(*.[1]);

我们可以通过像这样显式地进行单独比较来按姓氏、名字、生日进行排序:

@allRecords.sort(-> $a, $b {
    $a[2] cmp $b[2] || $a[1] cmp $b[1] || $a[0] cmp $b[0]
});

或者再次隐式地通过转换操作数:

@allRecords.sort(*.[2...0]);

转换生日条目,以便我们首先按年份排序,这是留给读者的练习,但一种方法是添加类似的内容

.comb(2).list.rotate(-1).join

在适当的情况下。

© www.soinside.com 2019 - 2024. All rights reserved.