JS中的filter()

JS中的filter()

一、语法

array.filter(function(currentValue, indedx, arr), thisValue)

二、参数描述

currentValue:必须。当前元素的值;
index:可选。当前元素的索引值;
arr:可选。当前元素属于的数组对象;
thisValue:可选。对象作为该执行回调时使用,传递给函数,用作 "this" 的值。
如果省略了 thisValue ,"this" 的值为 "undefined"。

三、注意

  • filter用于对数组进行过滤。
  • 它创建一个新数组,新数组中的元素是通过检查指定数组中符合条件的所有元素。
  • 注意:filter()不会对空数组进行检测、不会改变原始数组

四、实例

原始数组

var arr = [3,9,4,3,6,0,9];

1. 返回数组nums中所有大于5的元素。

function max5(arr){
     return arr.filter((x) => x > 5});
}
//ES6语法:箭头函数(参数1, 参数2 ...) => { 函数体 }
//如果有且仅有 1 个形参,则()可以省略
//如果函数体内有且仅有 1 条语句,则{}可以省略,但前提是,这条语句必须是 return 语句。

2. 移除数组 arr 中的所有值与 item 相等的元素。不要直接修改数组 arr,结果返回新的数组

function remove(arr, item) {
    return arr.filter(val => val != item);
}

3. 数组去重

var r = arr.filter(function (element, index, self) {
        return self.indexOf(element) == index;
});

去除重复元素依靠的是indexOf总是返回第一个元素的位置,后续的重复元素位置与indexOf返回的位置不相等,因此被filter滤掉了。

4. 在数组 arr 中,查找值与 item 相等的元素出现的所有位置

输入
['a','b','c','d','e','f','a','b','c'] 'a'
输出
[0, 6]
function findAllOccurrences(arr, target) {
    var res=[];
    arr.filter(function(ele,index){
        return (ele===target)&&res.push(index);
    })
    return res;
}

五、高级应用

待续

六、参考

JS中filter的用法 - 只争朝夕,不负韶华 - 博客园

posted @ 2022-01-24 13:23  前端白雪  阅读(6946)  评论(0编辑  收藏  举报