zoukankan      html  css  js  c++  java
  • es6扩展运算符

    1:数组扩展运算符

    概念:扩展运算符Spread(...)是将一个数组转为用逗号分隔的参数序列

    function f(...rest)
    {
      console.log(rest)
    }
    f(1,2,3)

      

    ...rest是一个逗号分隔的参数序列, 如果调用f(1,2,3),我们会打印出[1,2,3],说明
    rest是数组

    可以认为...rest就是 1,2,3的参数序列, rest就是数组


    数组作为参数,使用扩展运算符展开

    function f(x, y, z) {
    // ...
    }
    args=[1,2,3]
    f(...args)
    

      

    复制数组

    const a1 = [1, 2];
    a2=[...a1]
    [...a2]=a1
    

      

    合并数组

    const a1 = [1, 2];
    const a2 = [3, 4];
    es5写法:a1.concat(a2)
    es6写法:const a3 = [...a1,...a2];


    与解构赋值结合

    const a1=[1,2,3,4,5]
    const [first,...rest]=a1
    first:1
    rest:[2, 3, 4, 5]
    

      

    flatMap
    先map再flat
    [2, 3, 4].flatMap((x) => [x, x * 2])

    2:对象扩展运算符
    用于取出参数对象的所有可遍历属性,拷贝到当前对象之中。解构赋值必须是最后一个参数,否则会报错

    let {x,y,...z}={ x: 1, y: 2, a: 3, b: 4 };
    
    z={a:3, b:4}
    

    数组是特殊对象

    let o={...['a','b']}

    o为{0:'a', 1:'b'}

    合并两个对象

    a={a:'1'}
    b={b:'1'}
    let ab = { ...a, ...b };
    let ab = Object.assign({}, a, b);
    

      

    自定义的属性,放在扩展运算符后面,则扩展运算符内部的同名属性会被覆盖掉。

    a={a:'1'}
    let aWithOverrides = { ...a, a:'a1'};
    Object.assign({},a,{a:'a1'})
    Object.assign(a,{a:'a1'})
    

      

    人生旅途,边走边看...
  • 相关阅读:
    [HNOI2002]营业额统计
    HDU 1374
    HDU 3345
    HDU 2089
    Graham扫描法
    Codeforces 1144D Deduction Queries 并查集
    Codeforces 916E Jamie and Tree 线段树
    Codeforces 1167F Scalar Queries 树状数组
    Codeforces 1167E Range Deleting
    Codeforces 749E Inversions After Shuffle 树状数组 + 数学期望
  • 原文地址:https://www.cnblogs.com/dming4/p/15428678.html
Copyright © 2011-2022 走看看