一种写法简洁且高效的数组查找元素方法

来源:互联网 发布:忧伤说唱 网络歌手mp3 编辑:程序博客网 时间:2024/06/06 12:49
function(arr,o,i){for(var j=arr.length,i=i<0?i+j<0?0:i+j:i||0;i<j&&arr[i]!=o;i++){}return j<=i?-1:i;}

在阅读socket.io源码的过程中发现了其数组查找元素的方法写的极为精妙。其中参数为:目标数组arr。目标元素o,开始查找的数组位置索引i。如果索引i为负数的话则代表从数组最后一个位置向前算起,直到第一个元素。


另外发现还有一个比较有意思的事情。就是在判断查找结果是否是-1的时候,源码中并非是一个简单的判断==-1.而是使用按位非(~)运算符。凡是能被转换为number类型的数据,按位非运算后改变运算符号然后减1.

因此写法可以是这样:

if(~indexOf(arr,o)){   //如果元素在数组中的话}
如果元素不在数组的话indexOf()返回-1.对-1按位非预算后是0.

0 0
原创粉丝点击