Perl如何按epoch时间戳排序多维数组并提取内容到新变量
解决方案
你可以直接对computers数组的元素按report_date_epoch字段做数值排序,直接把排序后的结果赋值给新数组变量即可,自动就去掉了外层的哈希结构:
# 原始数据变量 my $data = { computers => [ { report_date_epoch => 1591107993595, serial_number => "C02YK1TAFVCF", username => "fake1\@example.com", }, { report_date_epoch => 1626877069476, serial_number => "C03XF8AWJG5H", username => "fake2\@example.com", }, # 其余数据省略 ] }; # 按report_date_epoch升序排序,得到无外层结构的新数组 my @sorted_items = sort { $a->{report_date_epoch} <=> $b->{report_date_epoch} } @{$data->{computers}};
补充说明
- 如果你需要降序排序,把排序逻辑里的
$a和$b调换位置即可:sort { $b->{report_date_epoch} <=> $a->{report_date_epoch} } - 必须使用数值比较符
<=>,不要用字符串比较符cmp,避免长数字按字符串排序出现错误结果 - 最终得到的
@sorted_items就是直接存储所有排序后数据条目的数组,没有外层的computers键包裹
内容的提问来源于stack exchange,提问作者Jeremy Wilson
相关产品推荐
相关产品推荐

