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]