arrays - 在 Perl 中,如何将散列数组转换为值数组?

标签 arrays perl hash mapping

我有一个哈希数组:

my @sports;
push @sports, { id=>1, name=>'Rugby' };
push @sports, { id=>2, name=>'Football' };

我想获得所有名称的数组(显示在 CGI 弹出菜单中)。我尝试使用这个 grep 语句:

my @names = grep { $_->{name} } @sports;

但它只是返回一个散列值数组...

所以我目前正在使用循环来遍历所有值,将它们插入另一个数组。

有什么办法可以加快速度吗?

最佳答案

你想要map , 不是 grep :

use strict;
use warnings;
my @sports;
push @sports, { id=>1, name=>'Rugby' };
push @sports, { id=>2, name=>'Football' };
my @names = map $_->{name}, @sports;
print for @names;
D:\temp> perl -l m.pl
Rugby
Football

但请注意,这与速度没有任何关系,至少没有太大关系,而且速度不应该是您的主要关注点;可读性应该是它。当然,效率很重要,但不要让自己误以为代码越简洁、越隐晦,程序的性能就越好。事实并非如此。 To assess performance, benchmark your programs .

关于arrays - 在 Perl 中,如何将散列数组转换为值数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10615120/

相关文章:

php - php可以使用js href.split从hash后的url中获取值吗?

hash - 自有字符串和借用字符串是否保证散列到相同的值?

arrays - 有没有更好的方法来创建数组的索引?

linux - CentOS 中的 Perl v5.32 安装

c++ - 尝试用数组中的数字制作每个数字的可能性

mysql - 在 @INC 中找不到 Email/MIME.pm

perl - 如何忽略带有 `perl -i` 的只读文件?

ruby - 在 ruby​​ 中合并一些复杂的哈希值

Javascript 错误对象数组出现意外的新标记

javascript - 通过对象数组进行映射并动态访问其属性(使用变量)