zoukankan      html  css  js  c++  java
  • 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++ stack 适配器
    错误记录
    css3动画,制作跑步运动,画笔画圆,之类的连贯性动作的方法
    关于$.cookie
    JavaScript中常见易犯的小错误
    关于内存泄漏
    Javascript的异步编程方法
    JavaScript中this关键词的四种指向
    javascript之回调函数小知识
    移动端的兼容性
  • 原文地址:https://www.cnblogs.com/petterguo/p/9067734.html
Copyright © 2011-2022 走看看