js如何查找数组中是否存在某个值

JavaScript030

js如何查找数组中是否存在某个值,第1张

可以用数组的indexOf函数,方法arr.indexOf(find,start)

find:要找的内容,必须;

start:查找开始下标,可选;

返回:查找数据所在的下标,如果没找到,返回-1

如果只要知道是否有8这个数字,直接调用arr.indexOf(8),如果返回值不为-1,说明找到了

var s=[1,2,3,5,6,9]

var u=s.indexOf(5)//返回5所在的下标3

var d=s.indexOf(8)//返回-1

console.log(u)

console.log(d)

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

const array = ['apple', 'banance', 'orange']

array.indexOf('apple')// 0 存在

array.indexOf('strawBerry') // -1不存在

const array = ['apple', 'banance', 'orange']

array.find(obj =>obj == 'banance')//banance 存在

array.find(obj =>obj == 'strawBally')//undefined 不存在

const arrayList = [

{name: '张三'}, {name: '李四'}

]

arrayList.find(obj =>obj.name == '李四')//{name: '李四'} 存在

arrayList.find(obj =>obj.name == '王五')//undefined 不存在

const array = ['apple', 'banance', 'orange']

array.findIndex(obj =>obj == 'banance') //大于0存在

array.findIndex(obj =>obj == 'strawBally') //-1 不存在

const array = ['apple', 'banance', 'orange']

array.includes('banance') //true存在

array.includes('strawBally') //false存在

const array = ['apple', 'banance', 'orange']

array.filter(obj =>obj == 'orange') //['orange'] 存在

array.filter(obj =>obj == 'strawBally') //[] 不存在

const array = [{ name: 'banance' }, { name: 'apple' }]

console.log(array.filter(obj =>obj.name === 'apple'))//[{name: 'apple'}] 存在

console.log(array.filter(obj =>obj.name === 'strawBally'))//[] 不存在