map,filter,reduce

2018-07-24  本文已影响0人  RDbaby

对于map,filter,reduce这三者之间,用的比较少,也没有做什么整理,导致一直傻傻分不清。今天趁着暂时没啥bug,趁机整理一波,以备不时之需。。
惭愧惭愧哈。
话不多说上代码,一切都在注释中。

    <script>
        // map
        let arr=[2,3,4,5];
        let b=arr.map(e=>{
            return e=e*2
        })
        // console.log(arr)//[2,3,4,5]
        // console.log(b)//[4,6,8,10]
        //map不改变原数组,返回一个原数组处理之后的新的数组
        //map 有且必须有return ,否则新数组各项值为undefined


        // filter
            //深拷贝数组
        let arr2=[...arr]
        // let arr2=arr.slice();
        // let arr2=arr.concat();
        let c=arr2.filter(e=>{
            return e>4
        })
        // console.log(arr2)//[2,3,4,5]
        // console.log(c)//[5]
        //filter 不改变原数组,返回符合条件筛选后的一个新的数组
        //filter 有且必须有return 否则新数组为一个空的数组
        

        //reduce
        // 语法 
        // arr.reduce(callback(previousValue, currentValue, currentIndex,array),initialValue); 
        // 参数 
        // callback:累加器函数 
        // previousValue: 上一次调用函数后的返回值,或者是提供的初始值(initialValue) 
        // currentValue:当前数组的元素 
        // currentIndex:当前数组元素的索引 
        // array:调用reduce的数组 
        // initialValue:初始值,作为第一次调用callback的第一个参数,也可不写,默认为0;
        let arr3=[...arr2]

        //1.filter累加器
        let d=arr3.reduce((total,e)=>{
            
            return total+=e
        })
        console.log(arr3)//[2,3,4,5]
        console.log(d)//14
        //reduce必须有return 若无return 返回值为undefined

        //2.reduce实现filter和map
        let f=arr3.reduce(((total,e)=>{
            //map
            e*=2;
            //filter
            if(e>4){
                total.push(e)
            }
            return total
        }),[])
        console.log(f)//[6,8,10]
    </script>
上一篇 下一篇

猜你喜欢

热点阅读