扩展运算符 - es5VSes6运用

扩展运算符 - push

       var arr1 = [0, 1, 2];
       var arr2 = [3, 4, 5];
       let a =  Array.prototype.push.apply(arr1, arr2);
       console.log(a) // 6
       console.log(arr1) // [0, 1, 2, 3, 4, 5]
       console.log(arr2) // [3, 4, 5]
        let arr1 = [0, 1, 2];
        let arr2 = [3, 4, 5];
        let a = arr1.push(...arr2);
        console.log(a) // 6
        console.log(arr1) // [0, 1, 2, 3, 4, 5]
        console.log(arr2) // [3, 4, 5]

复制数组

        const a1 = [1, 2];
        const a2 = a1.concat();
        a2[0] = 3;
        console.log(a1) // [1, 2] 
        const a1 = [1, 2];
        const a2 = [...a1];
        a2[0] = 3;
        console.log(a1) // [1,2] 
        console.log(a1) // [1,2] 
        const a1 = [1, 2];
        const a2 = a1;
        a2[0] = 3;
        console.log(a1) // [3, 2] 

合并数组

        const arr1 = ['a', 'b'];
        const arr2 = ['c'];
        const arr3 = ['d', 'e'];

        // ES5 的合并数组
        let a = arr1.concat(arr2, arr3);
        console.log(a) //["a", "b", "c", "d", "e"]
        const arr1 = ['a', 'b'];
        const arr2 = ['c'];
        const arr3 = ['d', 'e'];

        // ES5 的合并数组
        let a = [...arr1, ...arr2, ...arr3]
        console.log(a) //["a", "b", "c", "d", "e"]

如果将扩展运算符用于数组赋值,只能放在参数的最后一位,否则会报错

const [...butLast, last] = [1, 2, 3, 4, 5];
// 报错
const [first, ...middle, last] = [1, 2, 3, 4, 5];
// 报错
const [first, ...rest] = [1, 2, 3, 4, 5];
first // 1
rest  // [2, 3, 4, 5]

const [first, ...rest] = [];
first // undefined
rest  // []

const [first, ...rest] = ["foo"];
first  // "foo"
rest   // []

扩展运算符还可以将字符串转为真正的数组。

[...'hello']
// [ "h", "e", "l", "l", "o" ]

  

 

 

 

 

 

 

  

posted @ 2020-03-24 16:38  banzhuxiang  阅读(548)  评论(0)    收藏  举报