美文网首页nodejs学习
nodejs扩展运算符的应用

nodejs扩展运算符的应用

作者: 村东头元旦家 | 来源:发表于2018-12-06 17:42 被阅读19次

    nodejs复制数组,合并数组

    1、复制数组:

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

    const

    a1 = [1,2];

    const a2 = a1;

    console.log("------a1=",a1,'------a2=',a2);

    a2[0]=22222;

    console.log("------a1=",a1,'------a2=',a2);

    //------a1= [ 1, 2 ] ------a2= [ 1, 2 ]

    //------a1= [ 22222, 2 ] ------a2= [ 22222, 2 ]

    上面代码中,a2并不是a1的克隆,而是指向同一份数据的另一个指针。修改a2,会直接导致a1的变化。

    es5只能用变通的方法来复制数组。

    const a1 = [1,2];

    const a2  = a1.concat();

    console.log("------a1=",a1,'------a2=',a2);

    a2[0]=22222;

    console.log("------a1=",a1,'------a2=',a2);

    //------a1= [ 1, 2 ] ------a2= [ 1, 2 ]

    //------a1= [ 1, 2 ] ------a2= [ 22222, 2 ]

    上面代码中,a1会返回原数组的克隆,再修改a2就不会对a1产生影响。

    扩展运算符提供了复制数组的简便写法。

    const a1 = [1, 2];

    const a2 = [...a1];

    const [...a2] = a1;

    上面的两种写法,a2都是a1的克隆。

    (2)合并数组

    扩展运算符提供了数组合并的新写法。

    const arr1 = ['a', 'b'];

    const arr2 = ['c'];

    const arr3 = ['d', 'e'];

    // ES5 的合并数组

    arr1.concat(arr2, arr3);

    // [ 'a', 'b', 'c', 'd', 'e' ]

    // ES6 的合并数组

    [...arr1, ...arr2, ...arr3]

    // [ 'a', 'b', 'c', 'd', 'e' ]

    不过,这两种方法都是浅拷贝,使用的时候需要注意。

    const a1 = [{ foo: 1 }];

    const a2 = [{ bar: 2 }];

    const a3 = a1.concat(a2);

    const a4 = [...a1, ...a2];

    a3[0] === a1[0] // true

    a4[0] === a1[0] // true

    上面代码中,a3和a4是用两种不同方法合并而成的新数组,但是它们的成员都是对原数组成员的引用,这就是浅拷贝。如果修改了原数组的成员,会同步反映到新数组。


    相关文章

      网友评论

        本文标题:nodejs扩展运算符的应用

        本文链接:https://www.haomeiwen.com/subject/wnpocqtx.html