数组filter方法
    在编程中,数组的处理是非常常见的,而数组的filter方法又是一个重要的数组处理方法。本文将介绍filter方法,包括它的用法、特点、注意事项以及和其它操作方法的区别等。
    一、filter方法介绍
    1.1 filter方法概述
    filter方法是一个ES5引入的数组处理方法,它可以根据提供的bool函数,对原数组进行过滤运算,返回过滤后的新数组,原数组的内容并不会发生变化。
    例如:在一个数组 [1, 2, 3, 4] 中,根据筛选条件 x>2使用filter方法,可以返回筛选后的数组 [3, 4]。
    1.2 filter方法实现原理
    filter方法定义如下:array.filter(callback,[thisArg])。其中,callback是bool函数,它有三个参数:当前元素、当前元素的索引和数组本身。此外,thisArg参数可以指定filter方法中this
指向的对象。
    使用filter方法时,它将会依次调用callback函数,检查每一个元素是否满足筛选条件,如果满足将元素放入新的数组中,最终返回新的数组。
    二、filter方法的用法
    2.1 filter的基本用法
    如前所述,filter方法的参数是一个bool函数,根据此函数的返回值判断是否把当前元素放入新的数组中。该bool函数的返回值有四种可能:
    1) true:如果返回true,则把当前元素放入新的数组中
    2) false:如果返回false,则不会把当前元素放入新的数组中
    3) 不返回或者返回undefined:忽略当前元素,不放入新的数组中
    4) 不返回值但抛出错误:忽略当前元素,不放入新的数组中
    例如:要在一个数组 [1, 2, 3, 4, 5] 中,筛选出大于3的数,则可以使用以下filter方法:
    array.filter(function(x) { return x > 3; });
    程序将会返回一个新的数组[4, 5]
    2.2过thisArg使用filter方法
    根据前文所述,filter方法有一个可选参数thisArg,可以用来指定在执行callback函数时,this指向的对象,如果不指定,那么this将会指向window。
    例如:当前环境中有一个变量obj,变量obj的值为{ a: 1, b: 2},如果想使用filter方法筛选出,obj中值大于1的对象,则可以使用以下filter方法:
    Object.keys(obj).filter(function(key) { return obj[key] > 1; },obj);
    程序将会返回一个新的数组 [b
    三、特点
    3.1 filter方法的性能
    filter方法的效率很高,原因有以下几点:
    1) filter方法是就地操作,因此不会创建新的数组,也不会复制原数组中的元素;
    2) filter方法使用一个回调函数,回调函数一次只处理一个元素;
    3) filter方法会及时停止,当回调函数返回false时,filter方法将会停止;
    以上三点使得filter方法在效率上比for和forEach要高一些。
    3.2 filter方法返回值
    filter方法返回的是一个新的数组,数组中的元素是根据bool函数返回结果而筛选出来的,因此,filter方法的返回值跟此次过滤的条件有关。
    当callback函数返回true,元素放入新的数组中,如果callback函数返回false,则不放入新的数组中;如果callback函数没有返回值,则忽略该元素,不放入新的数组中。
    四、注意事项
    4.1 filter方法不会改变原数组
    filter方法是就地操作,也就是说,它不会改变原数组,而是返回一个新数组,原数组不发生变化。
    4.2 使用filter方法时,注意callback函数的返回值
    如果用filter方法筛选数组中的元素时,要注意callback参数的返回值。如果返回的是true,则该元素将会放入新的数组中,如果返回的是false,则该元素将不会放入新的数组中。
    五、filter方法与其它操作方法的区别
    filter方法与其它操作方法是有一定区别的,下面列出了几个主要的区别:
    1.filter方法返回的是一个新的数组,而其它操作方法(如forEach,map等)都是就地操作,不会返回新的数组。
    2.filter方法只处理满足条件的元素,而其它操作方法(如map)会处理所有元素。
    3.filter方法是有返回值的,而其它操作方法(如forEach)没有返回值。
    六、结语
filter过滤对象数组    本文介绍了filter方法的用法、特点、注意事项以及它和其它操作方法的区别。作为一种数组处理方法,filter方法的使用范围非常广泛,在实际开发中应尽量多使用filter方法,以提高效率。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。