js 中判断数组中是否包含某个元素

JavaScript011

js 中判断数组中是否包含某个元素,第1张

1.arr.indexOf(搜索元素,开始位置):

元素在数组中的位置,如果没搜索到则返回 -1

2.arr.includes(搜索元素):

如果是返回 true,否则false

3.filter() 方法:返回符合条件的元素组成的数组

4.array.find():返回找出第一个符合条件的数组元素

5.array.findIndex():返回第一个符合条件的数组元素的位置,

如果所有元素都不符合条件,则返回-1

6.传统for()循环

7.for...of

8.forEach

9.some():用于检测数组中的元素是否满足指定条件(函数提供)

如果有一个元素满足条件,则表达式返回true , 剩余的元素不会再执行检测。

如果没有满足条件的元素,则返回false。

10.every:用于检测数组中的元素是否满足指定条件(函数提供)

如果都满足条件,则表达式返回true ,

如果有一个不满足,则返回false。

1.js的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()并没有改变数组的原始值

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

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

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

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

5.最常见的就是 for和if 的组合

注意: 这里forEach return 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

}