首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何获取数组中元素的索引?

如何获取数组中元素的索引?
EN

Stack Overflow用户
提问于 2010-07-11 14:44:46
回答 4查看 39.1K关注 0票数 31

Perl有没有内置函数来获取数组中元素的索引?或者我需要自己写一个这样的函数?相当于PHP array_search()或JavaScript array.indexOf()

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2010-07-11 14:52:16

代码语言:javascript
复制
use List::Util qw(first);
$idx = first { $array[$_] eq 'whatever' } 0..$#array;

(List::Util是核心)

代码语言:javascript
复制
use List::MoreUtils qw(firstidx);
$idx = firstidx { $_ eq 'whatever' } @array;

(List::MoreUtils在CPAN上)

票数 49
EN

Stack Overflow用户

发布于 2010-07-11 18:15:46

下面是5.10之后的一种方法,增加了确定有多少索引与给定值匹配的好处。

代码语言:javascript
复制
my @matches = grep { $array[$_] ~~ $element } 0 .. $#array;

如果保证所有元素都是唯一的,或者只有第一个索引是感兴趣的:

代码语言:javascript
复制
my ($index) = grep { $array[$_] ~~ $element } 0 .. $#array;
票数 13
EN

Stack Overflow用户

发布于 2010-07-11 20:55:23

这是一个autobox解决方案:

代码语言:javascript
复制
use autobox::Core;

my @things = qw/blue black green red green yellow/;

my $first_green = @things->first_index( sub{ $_[0] eq 'green' } ); # code block
my $last_green  = @things->last_index ( qr/^green$/ );             # or regex

say $first_green;    # => 2
say $last_green;     # => 4
票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3222138

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档