• 六、扩展运算符


    可分为 数组的扩展运算符 [...] 和对象的扩展运算符 {...}  两大类

    作用1:实现浅拷贝,避免污染数据。

    特点:浅拷贝后得到的对象/数组,与源对象/数组互不影响

    【实际应用:上拉加载数据】

    代码实现:

    let arr=[2,3,4,5];
    let obj={name:"李四",age:18,grade:"One",mark:"A"};
    
    let newArr=[...arr]; //newArr与arr指向不同的内存空间,实现浅拷贝
    let newObj={...obj} ;//newObj与obj指向不同的内存空间,实现浅拷贝
    
    console.log(newArr,arr);
    console.log(newObj,obj);
    View Code

    作用2:实现数组的合并

    特点:合并数组 、合并对象

    【实际应用:前端通过组合 对象,返回数据给后台】

    代码实现:

            let data=[   //第一页数据
                {id:1,title:"羊肉串"},
                {id:2,title:"猪肉串"},
                {id:3,title:"牛肉串"},
            ];
            let newData=[   //第二页数据
                {id:4,title:"啤酒"},
                {id:5,title:"可乐"},
                {id:6,title:"雪碧"},
                {id:7,title:"达芬奇"},
            ];
       
             let data2=[...data,...newData]; //合并的方式1
             newData.push(...data);//合并的方式2
             newData=[...data];//错误合并1:newData会被覆盖
             newData.push([...data]);//错误合并2:将data作为整体放进去了
    
             console.log(newData,data2);
    View Code

    es6可以用扩展运算符实现浅拷贝,es5可以用for循环实现浅拷贝。

    es5用for循环实现数组的浅拷贝

    var arr=[2,3,4,5];
    var newArr=[];
    for(var i=0;i<arr.length;i++){
        newArr[i]=arr[i];
    }
    newArr.push(7);
    console.log(newArr);
    View Code

    es5用for循环实现对象的浅拷贝

    var obj={name:"李四",age:18,grade:"One",mark:"A"};
    var newObj={};
    
    for(key in obj){
        
         newObj[key]=obj[key];
    }
    
    newObj.English=90;
    console.log(newObj,obj);
    View Code
  • 相关阅读:
    Service与Activity通信 回调方式***
    WeakReference 在android中的应用
    解决用官方容器启动redmine无法插入中文字符的问题
    Python 使用scapy 时报:ImportError: cannot import name 'NPCAP_PATH' 解决
    python3 图片文字识别
    python3 读取dbf文件报错 UnicodeDecodeError: 'gbk' codec can't decode
    RbbitMQ消息队列及python实现
    windows10创建ftp服务器
    什么是ip代理
    Python3爬虫实例 代理的使用
  • 原文地址:https://www.cnblogs.com/Strugglinggirl/p/15211835.html
Copyright © 2020-2023  润新知