JS Array filter()方法

JS Array filter()方法

js的数据对象有一个fileter()方法,运行传入一个方法,并对数组中的每个元素进行过滤。

var arr = [1,2,3,4,5,6];
function checknum(num){
    
    
	return num >= 5 ;
}
var narr = arr.filter(checknum);    //结果:narr = [5,6]

1.语法

filter()的完整语法如下:

array.filter(function(currentValue,index,arr), thisValue)
  • function(currentValue,index,arr): 过滤用的函数,每个元素都会执行这个函数(必)
    • currentValue: 传入的值(必)
    • index : 索引(选)
    • arr: 当前调用filter()方法的数组对象(选)
  • thisValue : 传递给过滤函数的this的值。

2.案例

2.1过滤小于35岁的数据
var age = [17,21,35,45,54,64];
function checkage(age){
    
    
	return age >= 35 ;
}
var narr = age.filter(checknum);    //结果:narr = [35,45,54,64]
2.2过滤arr中小于30的数,并且过滤不存在于arr2中的数

分析一下下面的案例,当arr调用filter()方法并传入一个过滤函数时,我也传入了一个arr2数组对象,而这个arr2数组对象将会赋值给过滤函数中的this。当执行filter中的过滤函数时,会将arr中每个元素当成参数传递给checknum(num),判断num十分大于30并包含在arr2数组中,返回的Boolean结果将决定了该元素是否被保留。True(保留) False(去掉)。

var arr = [14,20,36,54,67,88,96]
var arr2 = [14,54,88]
function checknum(num){
    
    
	return num >= 30 && this.indexof(num)!=-1;
}
var narr = arr.filter(checknum,arr2);   //结果:narr = [54,88]
2.3过滤掉arr中第三个元素的值

filter() 方法创建一个新的数组,新数组中的元素是通过检查指定数组中符合条件的所有元素。所以在过滤的过程中arr数组并没有发生改变。

var arr = [14,20,36,54,67,8,36,36,96,36]
//可以传入箭头函数
var narr = arr.filter((currentValue,index,arr)=>{
    
    
    return currentValue ==arr[2];
});
2.4过滤掉arr中第三个元素的重复值

这里通过index获取当前元素在数组中索引,通过索引我们可以进行判断,从而避免删除第三个元素。(我们只是删除后面出现重复值)

var arr = [14,20,36,54,67,8,36,36,96,36]
//可以传入箭头函数
var narr = arr.filter((currentValue,index,arr)=>{
    
    
    return currentValue ==arr[2] && index != 2;
});

猜你喜欢

转载自blog.csdn.net/qq_43203949/article/details/111713213