• 技术文章 >web前端 >前端问答

    concat是es6语法吗

    青灯夜游青灯夜游2022-10-18 17:02:47原创159

    concat不是es6语法,它是es5时就有的,优点是兼容性高,不需要转译。concat方法用于多个数组的合并,使用语法“原数组对象.concat(新值)”;该方法可接受数组参数,也可接受其他类型的值作为参数。concat方法会将新数组的成员,添加到原数组成员的后部,然后返回一个新数组,原数组不变。

    大前端成长进阶课程:进入学习

    本教程操作环境:windows7系统、ECMAScript 6版、Dell G3电脑。

    concat不是es6语法,它是es5时就有的。

    ES5 数组方法concat()

    concat方法用于多个数组合并。它将新数组的成员,添加到原数组成员的后部,然后返回一个新数组,原数组不变

    ['hello'].concat(['world'])
    // ["hello", "world"]
    
    ['hello'].concat(['world'], ['!'])
    // ["hello", "world", "!"]
    
    [].concat({a: 1}, {b: 2})
    // [{ a: 1 }, { b: 2 }]
    
    [2].concat({a: 1})
    // [2, {a: 1}]

    除了数组作为参数,concat也接受其他类型的值作为参数,添加到目标数组尾部。

    [1, 2, 3].concat(4, 5, 6)
    // [1, 2, 3, 4, 5, 6]
    var arr = ['A', 'B', 'C'];
    arr.concat(1, 2, [3, 4]); // ['A', 'B', 'C', 1, 2, 3, 4]

    注意:concat只会拉平数组参数一次,不会拉平两次

    arr.concat([1, [2, 3]]); // [1, 2, 3, 1, [2, 3]]
    var obj = { a: 1 };
    var oldArray = [obj];
    
    var newArray = oldArray.concat();
    
    obj.a = 2;
    newArray[0].a // 2

    上面代码中,原数组包含一个对象,concat方法生成的新数组包含这个对象的引用。所以,改变原对象以后,新数组跟着改变

    扩展知识:数组合并的另一种方法

    使用ES6扩展运算符合并

    const name1 = ['A','B','C'];
            const name2 = ['D','E','F'];
            const name = [...name1,...name2]
            console.log(name);

    1.png

    对比:ES6扩展运算符...与ES5-concat

    concat是es5时就有的,优点是兼容性高,不需要转译

    ...是es6新出的语法,简化了写法,代码看上去更简洁直观,但实际只是做了封装,底层还是用的原来的方法,如下为babel转译的结果

    arr1 = [...arr1, ...arr2];
      ↓ 相当于
    function _toConsumableArray(arr) {
     if (Array.isArray(arr)) { 
       for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; 
       } else { return Array.from(arr); }
    }
    arr1 = [].concat(_toConsumableArray(arr1), arr2);

    【相关推荐:javascript视频教程编程视频

    以上就是concat是es6语法吗的详细内容,更多请关注php中文网其它相关文章!

    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。

    前端(VUE)零基础到就业课程:点击学习

    清晰的学习路线+老师随时辅导答疑

    自己动手写 PHP MVC 框架:点击学习

    快速了解MVC架构、了解框架底层运行原理

    专题推荐:ES6 javascript
    上一篇:es6怎么检测两个数组是否有相同项 下一篇:自己动手写 PHP MVC 框架(40节精讲/巨细/新人进阶必看)

    相关文章推荐

    • ❤️‍🔥共22门课程,总价3725元,会员免费学• ❤️‍🔥接口自动化测试不想写代码?• es6语法是什么时候发布的• es6数组怎么转换成字符串• es6构造函数只能有一个吗• es6支持什么浏览器• es6模块输出的值是拷贝的吗
    1/1

    PHP中文网