解构 箭头函数 展开运算符 数组迭代方法

1.对象解构赋值

1.解构赋值:变量赋值的简写语法

2.对象解构:

2.1 取出对象的属性值 赋值给 变量

2.2 取出变量的值 赋值给 对象

// 1 取出对象的属性值 赋值给 变量
        let obj={
            name:'张三',
            age:20,
            sex:'男'
        }

        // ES5
        // let name=obj.name
        // let age=obj.age
        // let sex=obj.sex
        // console.log(name,age,sex)

        // ES6
        // let name=obj.name
        // let age=obj.age
        // let sex=obj.sex
        let {name,age,sex,score}=obj
        console.log(name,age,sex,score)

        // 2 取出变量的值 赋值给 对象
        let username='admin'
        let password='123'
        let lin='123456'

        // ES5
        // let user={
        //     username:username,
        //     password:password
        // }

        // ES6
        let user={
            username, //username:username
            password,
            touxiang:lin,
            eat(){    //eat:function(){}
                console.log('吃东西')
            }
        }
        console.log(user)

2.数组解构赋值

数组解构:

            1.1 取出数组的属性值 赋值给 变量

            1.2 取出变量的值 赋值给 数组

// 1 取出数组的属性值 赋值给 变量
        let arr=[1,2,3]
        let [n1,n2,n3,n4]=arr
        console.log(n1,n2,n3,n4) //1 2 3 undefined

        // 2 取出变量的值 赋值给 数组
        let num1=1
        let num2=2
        let num3=3
        let arr1=[num1,num2,num3]
        console.log(arr1)

3.函数参数解构赋值

// 函数参数是:对象

// 函数参数结构原理

        // let obj={name:'李四',age:18}

        // let {name,age}=obj

        // 上面两行代码可以简写为一行

        // let {name,age} = {name:'李四',age:18}

function fn({name,age}){  //let {name,age}={name:'张三',age:20}
            // 对obj进行对象解构
            console.log(name,age)
        }

        fn({name:'张三',age:20})

4.箭头函数

1.箭头函数:相当于function函数的简写(用在匿名函数中)

            (1)把function改成箭头 =>

            (2)把形参小括号()移到箭头的左边

 // 1.基本用法

let fn = (a,b)=>{
            return a+b
        }
        let res = fn(10,20)
        console.log(res)

// 2.其他用法

        // (1)如果箭头函数形参只有一个,形参的小括号()可以省略

let fn1 = a=>{
            return a*2
        }
        let res1=fn1(66)
        console.log(res1)

         // (2)如果箭头函数的函数只有一行,则可以省略大括号(此时也必须省略return)

let fn2 = a=> a*2
        let res2=fn2(88)
        console.log(res2)

4.1 箭头函数的this指向

1. function函数this有三种指向

        (1)普通函数:函数名()  this->window

        (2)构造函数:new 函数名()  this->new创建的实例对象

        (3)对象的方法:对象名.方法名()  this->对象

 2.箭头函数this:箭头函数没有this

            本质是通过作用域链 访问上级this

3.以下几种函数不能是箭头函数

            构造函数

            call()无法修改箭头函数this

            事件处理函数

let obj={
            name:'lin',
            eat(){//1级链 function函数this->Object
                let fn1=function(){
                    // 2级链 fn1()中this->window
                    console.log(this)//window
                }
                fn1()
                let fn2=()=>{
                    // 2级链 箭头函数this指向上一级 Object
                    console.log(this)//Obiect
                }
                fn2()
            },
            learn:()=>{//1级链 箭头函数this指向上一级 window
                let fn1=function(){
                    // 2级链 fn1()中this->window
                    console.log(this)//window
                }
                fn1()
                let fn2=()=>{
                     // 2级链 箭头函数this指向上一级 window
                    console.log(this)//window
                }
                fn2()
            }
        }
        obj.eat()
        obj.learn()

5.展开运算符

1.展开运算符:...

            相当于对象遍历的一种简写

            语法:...对象名

 2.应用场景:

            2.1 连接数组

            2.2 求数组最大值

// 1.连接数组
        let arr1=[10,20,30]
        let arr2=[40,50,60]
        // ES5
        // arr1=arr1.concat(arr2)
        // console.log(arr1)

        // ES6
        arr1.push(...arr2)
        console.log(arr1)

        // 2.求数组最大值
        let arr=[11,22,44,88,99]
        let max=Math.max(...arr)
        console.log(max)

        // 3.连接对象
        let stu={
            score:80,
            className:'101'
        }
        let obj={
            name:'lin',
            age:18,
            ...stu
        }
        console.log(obj)

6.数据类型

1.数据类型Set:集合

            类似于数组,与数组最大的区别是:集合不能存储重复元素

2.应用:数组去重

let arr=[20,45,20,55,60,45,78,60]
       console.log(arr)

        // 1.创建Set
        let set=new Set(arr)
        console.log(set)
        // 2.Set转数组
        let newArr=[...set]

        // 上面步骤可以简写成一行(面试点,数组去重)
        let arr1=[...Set(arr)]

7.数组map遍历

1.map方法作用:根据某种规则映射数组,得到映射之后的新数组

            应用场景:(1)数组中所有元素 * 0.8  (2)将数组中的js对象映射成html字符串

2.map语法特点:

            (1)回调执行次数 === 数组长度

            (2)回调函数内部return

                return 新元素

                如果没有return,新元素是undefined

            (3)方法自身的返回值:

                映射后的新数组

let arr=[10,20,30,40]
        // 完整语法
        // let res=arr.map((item,index)=>{
        //     // console.log(item,index)
        //     return item*0.8
        // })

        // 熟练语法
        let res=arr.map(item=>item*0.8)
        console.log(res)

8.数组filter遍历

 1.filter方法作用:根据条件,筛选数组

            应用场景:(1)筛选数组中的偶数  (2)商品价格筛选

 2.filter语法特点:

            (1)回调执行次数 === 数组长度

            (2)回调函数内部return

                return true:满足条件 ,放入新数组

                return false:不满足条件

                如果没有return,新元素是undefined

            (3)方法自身的返回值:

                筛选之后的新数组

// 筛选数组中的偶数 
        let arr=[10,20,45,66,75,80]
        // 标准写法
        // let res=arr.filter((item,index)=>{
        //     if(item %2===0){
        //         return true
        //     }else{
        //         return false
        //     }
        // })
        // console.log(res)

        // 简洁写法
        let res=arr.filter(item=>item % 2 === 0)
        console.log(res)

9.数组forEach遍历

1.forEach方法作用:相当于for循环另一种写法

            应用场景:遍历数组

2.filter语法特点:

            (1)回调执行次数 === 数组长度

            (2)回调函数内部return

                无

            (3)方法自身的返回值:

                无

/ 遍历数组
        let arr=[10,20,45,66,75,80]
        arr.forEach((item,index)=>{
            console.log(item,index)
        })

10.数组some遍历

1.some方法作用:判断 数组中是否有满足条件的元素(逻辑或 || 有任意一个满足即可)

            应用场景:(1)判断数组中有没有奇数

                (2)非空判断:判断表单数组中,有没有元素value为空

2.some语法特点:

            (1)回调执行次数 !== 数组长度

            (2)回调函数内部return

                return true:循环结束。找到满足条件的元素,sam自身返回true

                return false:循环继续,没有找到满足条件的,如果所有元素都是返回false,最终some默认返回false

            (3)方法自身的返回值:

                true:有满足条件的元素

                false:没有满足条件的元素

// 判断数组中有没有奇数
            let arr=[10,20,30,40,50]

            // 标准写法
            // let res=arr.some((item,index)=>{
            //     if(item%2===1){
            //         return true
            //     }else{
            //         return false
            //     }
            // })

            // 简写语法
            let res=arr.some(item=>item%2===1)
            console.log(res)

11.数组every遍历

1.every方法作用:判断 数组中是否所有元素都满足条件(逻辑与 && ,全部满足)

            应用场景:(1)判断数组中是否所有元素都是偶数

                (2)开关思想:购物车是否全选

  2.every语法特点:

            (1)回调执行次数 !== 数组长度

            (2)回调函数内部return

                return true:循环继续。满足条件,如果所有元素都满足,最终every返回true

                return false:循环结束。不满足条件,此时every返回false

            (3)方法自身的返回值:

                true:所有元素都满足条件

                false:有元素不满足条件

// 判断数组中所有元素都是偶数
            let arr=[10,20,30,40,50]

            // 标准写法
            // let res=arr.every((item,index)=>{
            //     if(item%2===0){
            //         return true
            //     }else{
            //         return false
            //     }
            // })

            // 简写语法
            let res=arr.every(item=>item%2===0)
            console.log(res)

12.数组findIndex遍历

1.findIndex方法作用:找元素下标

            应用场景:(1)如果数组中是值类型,找元素下标,用arr.indexOf(元素)

                (2)如果数组中是引用类型,找元素下标,用arr.finedIndex(元素)

 2.findIndex语法特点:

            (1)回调执行次数 !== 数组长度

            (2)回调函数内部return

                return true:循环结束。找到元素,返回当前元素下标

                return false:循环继续。没有找到,如果全部都是false,最终返回固定值-1

            (3)方法自身的返回值:

                -1:没有元素

                下标:有元素

let arr=[
            {name:'张三',age:20},
            {name:'李四',age:25},
            {name:'王五',age:30}
        ]
        
        // 简洁写法
        let res=arr.findIndex(item=>item.name==='李四')
        console.log(res)

13.数组reduce遍历

1.数组reduce遍历:为每一个元素执行一次回调,返回最后一个回调的结果

2.reduce场景:求数组累加和

第一个参数:回调函数(sum,item,index)=>{}

            sum:上一次回调return返回值

            item:当前元素

            index:当前下标

第二个参数:sum初始值 ,一般给0,如果不给,遇到空数组,reduce就会报错

// 标准写法
        // let res=arr.reduce((sum,item,index)=>{
        //     console.log(sum,item,index)
        //     return sum+item
        // },0)
        // 简写语法
        let res =  arr.reduce( (sum,value)=>sum+value , 0 )
        console.log( res )

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值