ES6复制数组

ES6复制数组和合并数组

一、复制数组与合并数组

  复制数组:它是复合数据类型,直接复制只是复制了指向底层数据结构的指针,而不是复制一个全新的数组

  

<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title>数组的扩展</title>
    </head>
    <body>
    </body>
    <script type="text/javascript">
        /* 
            1、扩展运算符:扩展运算符(spread)是三个点,类似rest参数的逆运算,将一个数组转换为逗号分隔开的参数序列
        *****/
        console.log(...[1, 2, 3]);

        // 主要用于函数的的调用
        function push(arr, ...items) {
            // 函数的调用,使用扩展运算符,该运算符将一个数组变为参数序列
            arr.push(...items);
        }

        function add(x, y) {
            return x + y;
        }
        const number = [4, 354];
        // 函数的调用,使用扩展运算符,该运算符将一个数组变为参数序列
        let a = add(...number);
        console.log(a)

        /* 
            2、替代函数的apply方法
        *****/
        // (1)扩展运算符可以展开数组,所以不需要apply方法将数组转换为函数的参数
        // es5:
        let arr1 = [0, 1, 2, 3];
        let arr2 = [5, 6, 4, 3, 2];
        console.log(arr1.push(...arr2))

        /* 
            3、扩展运算符的应用
        *****/
        // (1)复制数组:复合数据类型,直接复制只是复制了指向底层数据结构的指针,而不是复制一个全新的数组
        const a1 = [1, 2, 3];
        const a2 = a1;
        // a2[0]=20;
        // a2并不是a1克隆的,而是指向同一份数据的另一个指针,修改a1时a1也会跟着改变
        a1; //20, 2, 3

        // 解决方法:es5
        const a3 = a1.concat();
        // 修改a3的同时不会改变a1
        a3[0] = 20;
        a1 //[1, 2, 3]
        // es6:克隆方法(2种)
        const a4 = [...a1];
        const [...a5] = a1;

        /* (2)合并数组*/
        const array1 = [1, 2];
        const array2 = ['zhou', 'zhou'];
        const array3 = ['z', 'zou'];
        // es5
        array1.concat(array2)
        // es6
        console.log([...array1, ...array2,...array3])
    </script>
</html>

  

猜你喜欢

转载自www.cnblogs.com/xiaozhou223/p/11733124.html