filter()和map()方法的理解

数组可以通过filter()和map()来对数组进行一系列操作;
我们先看一个简单的例子,他到底对数组做了什么:

 let arr = ['afs','asd','s','f'];
    arr.filter(function(item,index){
        console.log(item,index)
    })
    //afs 0
    //asd 1
    //s 2
    //f 3

这里map是一样的输出,可以看出啦,这两个方法类似于把我们的数组遍历了
那这两种方法到底在哪方面不同呢,我们看一个例子:

let arr = ['afs','asd','s','f'];
    let arr1 = arr.forEach((item,index) =>{
        return item.toUpperCase();
    });
    let arr2 = arr.filter((item,index)=>{
        return item.toUpperCase();
    })
    let arr3 = arr.map((item,index)=>{
        return item.toUpperCase();
    })
    console.log(arr1);    //undefined
    console.log(arr2);    // ["afs", "asd", "s", "f"]
    console.log(arr3);    // ["AFS", "ASD", "S", "F"]

嘿嘿,返回值不同,没错,主要就是在这的返回值上;

他们分别是做一次过滤(filter)和一次统一映射(map)。说的更通俗一点,就是map函数之后,数组元素个数不变,但是按照一定的条件转换,数组元素发生了变化。filter函数之后,数组元素个数可能发生了改变,但是数组元素不会发生改变。

我们再看一个可以改变元素个数的例子

 let arr = ['afs','asd','s','f'];
    let arr1 = arr.forEach((item,index) =>{
        return item.startsWith("a");
    });
    let arr2 = arr.filter((item,index)=>{
        return item.startsWith("a");
    })
    let arr3 = arr.map((item,index)=>{
        return item.startsWith("a");
    })
    console.log(arr1);    //undefined
    console.log(arr2);     //["afs", "asd"]
    console.log(arr3);      //[true, true, false, false]
    

另外,jQuery也提供了map,filter方法,用法和原生的map,filter类似,只不过index,item参数位置和原生正好相反

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值