js判断数组中是否存在某一数值的方法

1.javascript的indexOf()方法
var arr_data = [1,2,3];
arr_data.indexOf(1); //如果存在返回值的下标,不存在返回-1

2.jquery的$.inArray()方法

$.inArray(1, arr_data); //如果存在返回值的下标,不存在返回-1

3.arr.find()

数组实例的find()用于找出第一个符合条件的数组元素。它的参数是一个回调函数,所有的数组元素依次遍历该回调函数,直到找出第一个返回值为true的元素,然后返回该元素,否则返回undefined。

注意:find()对于空数组,函数是不会执行的。find()并没有改变数组的原始值

arr.find(function(value) {

   if(value === 要查找的值) {

       //则包含该元素   
}})

const myArr=[1,2,3,4,5,6];
var v=myArr.find(value=>value>4);
console.log(v);// 存在值 返回该元素

var v=myArr.find(value=>value>10);

console.lof(v);//不存在,返回undefined

回调函数有三个参数。value:当前的数组元素。index:当前索引值。arr:被查找的数组

var arry = [23,34,43,4,41,45,6];

var v=arry.find((value,index,arr)=>{
      return index==4
});
console.log(v); //41 返回元素


4.arr.findIndex()返回第一个符合条件的数组元素的位置,如果所有的元素都不符合条件,则返回-1.

注意:find(),findIndex()弥补了index的不足:(即判断NAN)

[NaN].indexOf(NaN) // -1

[NaN].findIndex(y => Object.is(NaN, y))// 0


var arry = [23,34,43,4,45,45,6];
var i = arry.findIndex((value)=>value==4);
console.log(i); 存在则返回元素在数组的位置,此处返回3,不存在则返回-1。


5.for循环和if判断
    var arr = [1, 5, 10, 15];
    //传统for
    for(let i=0; i<arr.length; i++) {
        if(arr[i] === 查找值) {
            //则包含该元素
        }
    }
    // for...of
    for(v of arr) {
        if(v === 查找值) {
            //则包含该元素
        }
    }
    //forEach
    arr.forEach(v=>{
        if(v === 查找值) {
            //则包含该元素
        }
    })

filter()
filter()与find()使用方法也相同。同样都接收三个参数。不同的地方在于返回值。filter()返回的是数组,数组内是所有满足条件的元素,而find()只返回第一个满足条件的元素。如果条件不满足,filter()返回的是一个空数组,而find()返回的是undefined
var arry = [23,34,43,4,41,23,34,45,6];
console.log(arry.filter(item=>item>40)); //[43, 41, 45] 返回符合条件的数组

数组去重

console.log(arry.filter((value,index,arr)=>arry.indexOf(value)===index)); //[23, 34, 43, 4, 41, 45, 6]

原文地址:https://www.cnblogs.com/haimeimei/p/13259008.html