怎么判断数组中是否有某元素
答案:2 悬赏:0 手机版
解决时间 2021-03-16 19:17
- 提问者网友:动次大次蹦擦擦
- 2021-03-15 18:51
怎么判断数组中是否有某元素
最佳答案
- 五星知识达人网友:你哪知我潦倒为你
- 2021-03-15 19:38
可以使用数组的indexOf()方法,如果返回值为-1则说明不存在,如果返回值为大于-1的整数,则说明存在。例如:
var arr = [1,2,3];
arr.indexOf(1); // 返回0
arr.indexOf(5); // 返回-1
附:返回值为数组中的最靠前元素在数组的位置
var arr = [1,2,3];
arr.indexOf(1); // 返回0
arr.indexOf(5); // 返回-1
附:返回值为数组中的最靠前元素在数组的位置
全部回答
- 1楼网友:拾荒鲤
- 2021-03-15 20:55
判断两个数组所有元素是否相同
直接比较数组名字即可,不必逐个元素比较。my@a= (1..10) ;my@b= (1..10) ;if(@a==@b) {print"equal\n"; #equal}
但需要注意一点,如果是数组的引用,那么就不能直接比较了。必须先解引用再比较。my$aref1= [1..10] ;my$aref2= [1..10] ;if($aref1==$aref2) {print"equal\n"# not equal}
先解引用再比较my$aref1= [1..10] ;my$aref2= [1..10] ;if(@$aref1== @$aref2) {print"equal\n"; # equal}打印数组
最笨的方法,多半来自其他语言比较熟悉的coder们。其中$#numbers表示数组numbers的最后一个元素的下标。在这里时9,所有要使用<=,而不是<,否则会漏掉最后一个元素。my@numbers= (1..10);for(my$i=0;$i<= $#numbers; ++$i) {print$numbers[$i],"\n";}
其实普通数组直接打印即可,无需遍历。my@a= (1..10) ;print@a;
方法一
直接遍历数组,逐个元素判断。方法二是用grepmy@colors= ('red','green','yellow',);if(grep{$_eq'red'}@colors) {print"exists!\n";}}方法三
如果是perl 5.10.0以上,可以使用智能匹配,如下。my@array= (1,2,3,4,5) ;my$var=2;if($var~~@array) {print"$var exists in (@array)\n";}定义空列表
定义空列表用(),而不是undef
下面代码输出1,这种写法表示列表的第一个元素是undef.严格的说并不是空列表。my@list=undef;push@list,1;push@list,2;print$list[1],"\n";#output 1
下面代码输出2my@list= ();push@list,1;push@list,2;print$list[1],"\n";#output 2
unless(xxx) 与 unless defined(xxx)
这两者是不一样的,前者表示xxx为假的时候执行代码,而后者表示xxx未定义时执行代码,也就是只有当xxx==undef时,后者才会执行,而前者以下几种情况都会执行的。xxx==undefxxx=0xxx='0'xxx=''xxx=""
将数组元素分组
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯