js判断一个数是否存在数组里

JavaScript021

js判断一个数是否存在数组里,第1张

function checkArr(t, arryAll){

arryAll.forEach(function(e){

if(t==e){

return true

}

})

return false

}

给你个方法,t是要检测的数,arrAll是数组,如果检测到就返回true,如果没检测到就返回false

可以直接使用数组的indexOf方法来判断,如果元素存在于数组中,那么返回元素在数组中的下标值,如果不存在,那么返回-1,但是该方法在某些版本的IE中是不起作用,所以建议使用jquery的inArray方法,该方法返回元素在数组中的下标,如果不存在与数组中,那么返回-1,代码如下所示:

/**

 * 使用jquery的inArray方法判断元素是否存在于数组中

 * @param {Object} arr 数组

 * @param {Object} value 元素值

 */

 function isInArray2(arr,value){

    var index = $.inArray(value,arr)

    if(index >= 0){

        return true

    }

    return false

}

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