剩余运算符和展开运算符

剩余运算符:rest运算符

        // 1.一定在最后
        // 2.剩余运算符是数组,arguments是一个伪数组
        function add(...rest) {
            console.log(arguments); //[1,2,3]伪数组
            console.log(rest); //[1,2,3]数组

            let sum = 0;
            rest.forEach(function(i) {
                sum += i;
            })
            console.log(sum);
        }
        add(1, 2, 3)

案例解析

 function family(company, ...rest) {
            console.log(arguments); //['百度', '广告', '链接', '网站']
            console.log(rest); //['广告', '链接', '网站']
            console.log(`${company}:${rest.join(',')}`); //百度:广告,链接,网站
        }
        family('百度', '广告', '链接', '网站')

...rest是剩余运算符有传入参数的话传入参数不会进入...rest中

展开运算符

逆运算 参数可以传入数组 

{
    function add(a, b, c) {
        console.log(a + b + c);
    }
    add(1, 2, 3)

    add(...[3, 4, 5]) //等于add(3,4,5)
}

拷贝对象 

{
    let obj1 = {
            name: "张三",
            age: 20,
            sex: "女",
            d: new Date()
        }
        //可以使用...obj1代替一串代码
    let obj2 = {
        /* name:obj1.name,
            age:obj1.age,
            sex:obj1.sex, */
        ...obj1,
        friend: "李四"
    };
    //可以改变其中的一个
    let obj3 = {
        ...obj1,
        name: "王五"
    }
    console.log(obj3); //{age:20,d:时间对象,name:'王五',sex:"女"}
    //obj4 是obj1拷贝出来的对象,obj4和obj1是独立
    // ...拷贝对象的时候,value是对象也可以拷贝
    let obj4 = {
        ...obj1
    }
    obj4.name = "小王"
    console.log(obj1);//{name:"张三"}
    console.log(obj4);//{name:"小王"}
}

合并数组

{
    // 合并数组给数组添加内容   
    let arr1 = [1, 2, 3]
    let arr2 = [3, 4, 5]
    let arr3 = [...arr1, ...arr2, 7, 8, 9]
    console.log(arr3); //[1,2,3,3,4,5,7,8,9]

    //push 
    let arr4 = ['a', 'b', 'c']
    arr4 = ['d', ...arr4]
    console.log(arr4); //["d","a","b", "c"]
}

 伪数组转化为数组

//伪数组转化为数组 
let btns = document.querySelectorAll("button")
let arrBtns = [...btns]

综合案例

{
    let workers = [{
        name: "小王",
        paid: 3000
    }, {
        name: "小李",
        paid: 4000
    }, {
        name: "小明",
        paid: 3500
    }, ]

    //map有返回值
    let arr = workers.map(function(item) {
        return {
            ...item,
            paid: item.paid + 2000
        }
    })
    console.log(arr);

}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值