• JavaScript 数组slice操作


    对js数组的操作是一个绕不开的问题,所以今天做一个总结。

    首先对于数组来说,他是引用类型,这一点需要牢记。

    Array.prototype.slice([begin[,end]])

    方法接受两个参数就是截取的begin,end两个参数,可以看出两个参数都是可选的,如果没有传递参数的话,默认表示对一个数组进行浅拷贝,返回一个新数组。

    let arr1 = [1,2,3,4];
    let arr2 = arr1.slice();
    arr2 // [1,2,3,4]
    arr1 === arr2 //false
    

      通过这种方法可以获得一个新数组,且两者互不相关

    begin表示从何处开始截取数组,end表示结束位置,但要注意的是,截取的数组是从begin到(end-1),这一点需要注意

    arr = [1,2,3,4];
    arr1 = arr.slice(1,3);
    arr1 // [2,3];
    

      如果省略第二个参数,则默认为array.length,也就是截取到最后,第一个参数可以为负数,则从倒数位置截取,例如

    arr = [1,2,3,4];
    arr.slice(-2) // [3,4]
    

      查看源码后可以看到

     var start = begin || 0;
          start = (start >= 0) ? start : Math.max(0, len + start);
    

      如果传入一个负值的话就会判断 加上数组长度然后和0比较大小,如果负值小于数组长度就从倒数的位置作为begin,否则就将0作为开始;

    另外需要注意的是slice拷贝数组的话属于数组的浅拷贝,使用的时候需要小心;

  • 相关阅读:
    快速排序
    C# String.Format
    理解C++ static
    程序地址空间
    map的实现
    【S4】使用empty()而不是判断size()是否为0
    RHEL6.4 NFS文件共享服务器搭建
    使用UDEV绑定ASM多路径磁盘
    MySQL的启动程序
    [ERROR] Fatal error: Please read "Security" section of the manual to find out how to run mysqld as root!
  • 原文地址:https://www.cnblogs.com/petterguo/p/9067734.html
Copyright © 2020-2023  润新知