ES6第二天

一、数组新增的方法

       1、.map()方法 ,给数组中的每一个元素添加特殊处理,返回一个新的数组。

案例1:

        let prices=[20,30,40] //20元 30元 40元

        let arr = prices.map(function(item){   //item 是每次循环的数组元素
            item = item+"元"
            retuen item
        })

        let arr=prices.map(item=>item+"元")  //上面的缩写

案例2://微信小程序 模拟 豆瓣电影  豆瓣api 获取电影资料
        let movies=[{id:1,name:'逃学威龙',imgUrl:"http://xxx.douban.com/1.png"},{id:2,name:'逃学威龙',imgUrl:"http://xxx.douban.com/1.png"},{id:3,name:'逃学威龙',imgUrl:"http://xxx.douban.com/1.png"}]
        movies=movies.map(item=>{                  //循环
            item.imgUrl= item.imgUrl.replace("xxx","www")  //替换
            return item
        })
        console.log(movies)

2、some()方法和every()方法

.every() 依次 拿出数组中的元素与特定的值进行比较,如果一个返回的是假 整体返回就是假,如果全部返回真 ,则为真  一假既假

.some()   一真既真 

案例:

let scores=[88,20,33,55,99,100]

        // let result=scores.every(item=>{
        //     return item>=60
        // })
        // console.log(result)
        let result=scores.some(item=>{
            return item>=60
        })
        console.log(result)

3、.filter()过滤方法

filter方法  依次的拿出数组中的元素,返回符合要求元素 返回一个新的数组;默认如果返回真,就相当于返回对应元素

案例:let result=arr.filter(function(item){
            return item>30
        })
        let result=arr.filter(item=>item>30)  //上面的缩写
        console.log(result)

4、.forEach ()依次拿出数组的元素

5、reduce()方法

        reduce方法 具有四个参数  计算处理返回一个结果
        1.prev 上次操作的返回结果
        2.item 当前处理数组元素
        3.index 当前处理数组元素的索引值
        4.array 当前对应的数组

        默认情况下 第一次的返回结果是第一个元素,如果需要给第一个元素也进行处理 ,需要自定义第一次的返回值
        结果等于 最后一次的返回结果

案例;

        let result=arr.reduce((prev,item,index,array)=>{
            console.log("prev"+prev)
            console.log("Item"+item)
            console.log("index"+index)
            console.log("--------------------------")
            return item
        })
        console.log(result)

案例2、利用reduce求和

        let result=arr.reduce((prev,item)=>{
                console.log("prev"+prev)
                console.log("Item"+item)
                console.log("--------------------------")
                return prev+item
            },0) //0为自定义的第一次返回值

可以简写为:let result=arr.reduce((prev,item)=>item+prev)

案例3、let arr=["百度","腾讯","阿里","京东"]
        //将其拼接成<Li></li>  输出拼接后的内容
        //reduce拼接 
        //需要给第一个元素也进行处理 ,需要自定义第一次的返回值 
        let result=arr.reduce((prev,item)=>{
            console.log("prev"+prev)
            console.log("Item"+item)
            console.log("--------------------------")
            return prev+"<li>"+item+"</li>"
        },"")  //空字符,为自定义的第一次返回值
        console.log(result)

面试题一、数组去重问题

let arr=["百度","腾讯","阿里","京东","百度","阿里","京东","百度"]

       //得到一个没有重复的新数组  .reduce
       let result=arr.reduce((prev,item)=>{
            //.includes() 判断数组中是否含有指定元素 有 返回T 没有F
            if(!prev.includes(item)){
                prev.push(item)
            }
            return prev
       },[])  //第一次返回空数组
       console.log(result)

ES6第二天

面试题二、统计数组中每一个字符出现次数 ,返回一个对象

//依次拿出数组中元素,判断其出现的次数  {a:2,n:1,}

        let arr=["a","a","n","z"]

        let result=arr.reduce((prev,item)=>{

            //先判断当前是否有 这个属性,如果有属性那么 value++ ,如果没有属性 创造新属性 =1

            //item是否存在prev中

            //如何判断对象是否有指定属性  用 in

            if(item in prev){

                prev[item]++

            }else{

                prev[item]=1

            }

            return prev

        },{})

上一篇:ES6之Map 与 Set


下一篇:面试之es6