zoukankan      html  css  js  c++  java
  • es6学习笔记

    1:数组的复制

    let aa = [1,2,3];
    let bb =aa;
    let cc = [...aa];
    console.log(bb);      //[1, 2, 3]
    console.log(cc);      //[1, 2, 3]
    aa[0]=4;
    console.log(bb);      //[4, 2, 3]
    console.log(cc);      //[1, 2, 3]

    因为数组的复制,只是引用地址的复制,原数组aa发生变化,直接复制的bb数组也跟着变化,使用...深度克隆数组,这样改变aa数组之后 cc数组不会变化!

    2:数组的合并:

            let aa =[1,2,3];
            let bb =[4,5,6];
            let cc =[...aa,...bb];
            let dd = aa.concat(bb);
            console.log(cc); //[1, 2, 3, 4, 5, 6]
            bb[0]=8;
            console.log(cc); //[1, 2, 3, 4, 5, 6]
            console.log(dd); //[1, 2, 3, 4, 5, 6]

    es5使用concat函数,es6直接使用。。。

    3:数组的赋值:

            let aa =[1,2,3];
            let bb =[4,5,6];
            let cc =[...aa,...bb];
            let [d,...rest]=cc;
            console.log(d);//1
            console.log(rest);//[2, 3, 4, 5, 6]
            bb[2]=7;
            console.log(rest);//[2, 3, 4, 5, 6]

    。。。rest保存剩下的数组,且是深度赋值,修改原数组aa,不影响rest

    4:对象的复制:

     1        let aa ={
     2             name:'haha'
     3         };
     4         let bb ={
     5             age:'11',
     6             name:'change'
     7         };
     8         let cc ={};
     9         Object.assign(cc,aa,bb);
    10         console.log(cc);//{name: "change", age: "11"}Object.assign(目标对象,原对象1,原对象2)


    值得注意的是:

    数组嵌套数组的数据格式,无法简单的用concat等方法达到深复制的目的:

    比如:

    var ceshiData = [
                [
                    {
                        name:'huahua',
                        age:'11'
                    },
                    {
                        name:'xiaoming',
                        age:'20'
                    }
                ]  
    ]

    无法用下面的方法完成深复制的目的:

    var aa = [];
    aa= ceshiData.concat();
    aa[0].push({
           name:'lili',
           age:'33'
     });
    console.log(ceshiData);

    这样还是会引用复制的!!

  • 相关阅读:
    Android中的Prelink技术
    Android 性能分析工具之 ARM Streamline
    Android之Systrace
    学习资源收藏夹
    Linux利器之perf(火焰图)
    Linux程序Segmentation fault (core dumped)
    C++编译器、链接器工作原理
    react使用redux
    Mac更新node版本和npm版本
    Nuxt引入axios;AXIOS的模块化封装
  • 原文地址:https://www.cnblogs.com/xiaozhumaopao/p/8067031.html
Copyright © 2011-2022 走看看