js如何判断获取到的值是否在数组中

 我来答
司马刀剑
高粉答主

2018-05-29 · 每个回答都超有意思的
知道顶级答主
回答量:4.6万
采纳率:93%
帮助的人:7525万
展开全部
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);//trueisInArray([1,2,3,4,5],6);//falseisInArray([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
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式