是否有直接的方法来找出数组元素的索引, 比如说 @ a = qw(a b c);
你如何获得元素b的索引; 我知道它的1,但想象一下大阵列的这种情况。
答案 0 :(得分:6)
如果您经常需要这样做,您可能需要哈希(除了数组之外或代替数组):
my @array = qw(a b c);
my %hash;
@hash{ @array } = 0..$#array;
print $hash{b}; # 1
答案 1 :(得分:3)
假设在“b”中搜索“b”时“回答”仍为1:
@a = qw(a b b c);
然后,使用模块List::MoreUtils和firstidx
(又名first_index
):
use List::MoreUtils qw{ firstidx };
print firstidx { $_ == 'b' } @a;
唯一的缺点是List :: MoreUtils不是(AFAICS)核心模块 - 所以它必须从CPAN安装。至少,Perl documentation没有记录它。
答案 2 :(得分:1)
我很确定如果你所拥有的只是对它的引用(例如,\$a[1]
),就没有办法。但是根据你所说的,你当然可以在数组中搜索“b”的循环,并记下你找到它时所处的索引。