我需要对数组的数组进行排序;
.sort
方法似乎可以通过
默认。但是按不同索引排序的好方法是什么
内部数组?
要排序的数组是外部较大数组:(生日格式为“mmddyy”)
my @allRecords = [ [birthday1 firstName1 lastName1 [data1]
[birthday2 firstName2 lastName2 [data2]
...
[birthdayN firstNameN lastNameN [dataN] ];
@allRecords.sort by itself sorts by birthdays.
按名字或姓氏或内部数组内的数据排序的更好方法是什么?
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
在适当的情况下。