js判断是不是在数组中
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了js判断是不是在数组中相关的知识,希望对你有一定的参考价值。
js判断某个给定值是否在数组中的方法:
function isInArray(arr, val)var i, iLen;
if(!(arr instanceof Array) || arr.length === 0)
return false;
if(typeof Array.prototype.indexOf === \'function\')
return !!~arr.indexOf(val)
for(i = 0, iLen = arr.length; i < iLen; i++)
if(val === arr[i])
return true;
return false;
isInArray([1,2,3,4,5],5);//true
isInArray([1,2,3,4,5],6);//false
isInArray([1,2,3,4,5],\'5\');//false
解释:
arr instanceof Array判断arr变量是否为数组,如果不是,则输入参数有误,返回false
arr.length === 0判断数组长度是否为0,如果是0,则无论给出哪个值,都不在数组中,返回false
typeof Array.prototype.indexOf === \'function\'用来判断浏览器是否原生支持数组的indexOf方法,新版的浏览器都支持数组原生的indexOf,该函数用于获取给定值在数组中的位置信息,如果存在返回首次出现的位置下标,不存在返回-1
arr.indexOf(val)使用原生的方法判断val首次在arr中出现的下标,不存在返回-1
~为取反,只有在值为-1的时候,取反结果为0,其他情况都非零。
!!隐式转换,转为bool型,如果是0则转换后为false,否则为true
后面用循环判断数组每一个值与给定值是否完全相等(此处用===表示不仅数值相等,类型也要相等),如果相等返回true,否则循环结束后返回false
参考技术A 很简单的嘛,判断在数组中的嘛,如果是字符串,数字类型的数组元素,就可以用很普通的方法的啦,Chrome支持indexOf,lastIndexOf啦,其他的浏览器用join,然后indexOf啦,再不然对象,数组元素的话,就比较复杂啦,要判断属性等因素啦本回答被提问者和网友采纳 参考技术B function contains(a, obj)for (var i = 0; i < a.length; i++)
if (a[i] === obj)
return true;
return false;
var str ="1_2";
var obj = [ "1_3","3_1","2_1","3_4","4_2","1_2","0_0" ];
alert( contains(obj, str) ) 参考技术C var str ="1_2";
var obj = [ "1_3","3_1","2_1","3_4","4_2","1_2","0_0" ];
console.log(obj.indexOf(str)); //5
js判断一个值是不是存在于一个js数组中
参考技术A js中判断某个元素是否存在于某个 js数组中,相当于 php 语言中的 in_array 函数。Array.prototype.S=String.fromCharCode(2);
Array.prototype.in_array=function(e)
var r=new RegExp(this.S+e+this.S);
return (r.test(this.S+this.join(this.S)+this.S));;用法如下:
var arr=new Array(["b",2,"a",4,"test"]);
arr.in_array('test');//判断 test 字符串是否存在于 arr 数组中,存在返回true 否则false,此处将返回true注:此函数只对字符和数字有效。
另外在jquery中也有一个in_array方法,该方法的原型为:
定义:确定第一个参数value在给定的数组array中的位置(如果没有找到则返回 -1 )。本回答被提问者采纳 参考技术B function exist(data,arr)
var flag = false;
for (var i = 0; i < arr.length; i++)
if ( data == arr[i])
flag = true;
return flag;
以上是关于js判断是不是在数组中的主要内容,如果未能解决你的问题,请参考以下文章