"slice"英文是 片 的意思,顾名思义,slice方法是将数组切片,即返回原数组的一部分

slice() 方法返回一个新的数组对象,这一对象是一个由 begin 和 end 决定的原数组的浅拷贝(包括 begin,不包括end)。原始数组不会被改变。

   var arr = [4,2,7,0,1,6]arr.slice(1,3)   //[2,7]arr.slice()      //[4,2,7,0,1,6]arr.slice(1)     //[2,7,0,1,6]arr.slice(1,10)  //[2,7,0,1,6]arr.slice(-2)    //[1,6]arr.slice(-3,-1) //[0,1]

语法:

   arr.slice([begin[, end]])

begin 可选

提取起始处的索引(从 0 开始),从该索引开始提取原数组元素。如果该参数为负数,则表示从原数组中的倒数第几个元素开始提   取,slice(-2) 表示提取原数组中的倒数第二个元素到最后一个元素(包含最后一个元素)。如果省略 begin,则 slice 从索引 0 开始。如果 begin 大于原数组的长度,则会返回空数组。

end 可选

提取终止处的索引(从 0 开始),在该索引处结束提取原数组元素。slice 会提取原数组中索引从 begin 到 end 的所有元素(包含 begin,但不包含 end)。slice(1,4) 会提取原数组中从第二个元素开始一直到第四个元素的所有元素 (索引为 1, 2, 3的元素)。如果该参数为负数, 则它表示在原数组中的倒数第几个元素结束抽取。 slice(-2,-1) 表示抽取了原数组中的倒数第二个元素到最后一个元素(不包含最后一个元素,也就是只有倒数第二个元素)。如果 end 被省略,则 slice 会一直提取到原数组末尾。如果 end 大于数组的长度,slice 也会一直提取到原数组末尾。

返回值

一个含有被提取元素的新数组。

注意:

slice()方法不会改变原数组,

slice()方法是浅拷贝,如果原数组中包含引用类型,那么slice 会拷贝这个对象引用到新的数组里。两个对象引用都引用了同一个对象。如果被引用的对象发生改变,则新的和原来的数组中的这个元素也会发生改变

   var list = [{ name: "shi", age: 20 },[1, 2, 3], 60]var arr = list.slice()list[0].name = "xia"console.log(arr)   //[{ name: "xia", age: 20 },[1, 2, 3], 60]

Array.prototype.slice()常用之处是用于将实参列表( arguments)转为数组

由于arguments是类数组,不是真正的数组,不能调用数组的方法,所以需要使用Array.prototype.slice.call(arguments)将其转换为数组

    function demo(){var arr = Array.prototype.slice.call(arguments)console.log(arr)   //[1,2,3,4]}demo(1,2,3,4)

深入Array.prototype.slice()方法相关推荐

  1. Array.prototype.slice.call()方法详解

    在很多时候经常看到Array.prototype.slice.call()方法,比如Array.prototype.slice.call(arguments),下面讲一下其原理: 1.基本讲解 1.在 ...

  2. [转载]Array.prototype.slice.call(arguments,1)原理

    Array.prototype.slice.call(arguments,1)该语句涉及两个知识点. arguments是一个关键字,代表当前参数,在javascript中虽然arguments表面上 ...

  3. js Array.prototype.slice.call(arguments,0) 理解

    Array.prototype.slice.call(arguments,0) 经常会看到这段代码用来处理函数的参数 网上很多复制粘帖说:Array.prototype.slice.call(argu ...

  4. Array.prototype.slice.call

    Array.prototype.slice.call(arguments,0)就类似于arguments.slice(0),但因为arguments不是真正的Array,所以它没有slice这个方法. ...

  5. Array.prototype.slice.call 将伪数组转成真数组的原理是什么?

    好久没上SF,昨天上来看到一个问题,引起了我的兴趣.一番探索和研究后,有了此篇文章,也算是对该问题的解答. let pretendArr = {0:0,1:1,2:2,length:3}; [].sl ...

  6. Array.prototype.slice.apply(arguments)和[].slice.apply(arguments)解析

    我们知道,函数内部 arguments 是一个类数组对象,不是真正的数组,因此也无法使用数组的各种方法.想详细了解 argument 对象可以前往函数中的 arguments. (function f ...

  7. 详解 Array.prototype.slice.call(arguments)

    首先,slice有两个用法,一个是String.slice,一个是Array.slice,第一个返回的是字符串,第二个返回的是数组 在这里我们看第二个方法 1.在JS里Array是一个类 slice是 ...

  8. [转] 理解 JavaScript 中的 Array.prototype.slice.apply(arguments)

    假如你是一个 JavaScript 开发者,你可能见到过 Array.prototype.slice.apply(arguments) 这样的用法,然后你会问,这么写是什么意思呢? 这个语法其实不难理 ...

  9. Array.prototype.slice.call()如何工作?

    本文翻译自:how does Array.prototype.slice.call() work? 我知道它用于使参数成为一个真正的数组,但我不明白使用Array.prototype.slice.ca ...

最新文章

  1. 函数要多小才够好——谈小函数之道
  2. SDK location not found. Define location with an ANDROID_SDK_ROOT environment variable or by setting
  3. Hibernate4.x之映射关系--双向1-n
  4. 重庆邮电大学发布2021年最新小样本目标检测综述
  5. ByteBuffer使用之道
  6. arcgis坡度结果有误或z因子前有感叹号
  7. 在Centos7 更改Docker默认镜像和容器的位置
  8. Spring AOP之公共的切入点配置
  9. 吴恩达深度学习笔记 3.1~3.11 浅层神经网络
  10. 超级实用的内存泄漏归纳分析心得
  11. Hbase与传统关系型数据库对比
  12. 计算机接口74LS138,用74ls138设计全加器
  13. 最新支持备案域名后缀列表
  14. mysql数据库字符集实践详解_mysql数据库 详解 之 自学成才1
  15. iceberg Flink操作
  16. html5 ins标签,HTML ins标签常用的用法有哪些?HTML ins常用属性的介绍
  17. php 判断号码运营商,PHP根据手机号判断运营商(详细介绍附代码)
  18. 【周末闲谈】谈谈数学转码这一年来的体会与反思
  19. 搭建s9、s19、L3+维修平台
  20. 快速创建微信小程序,注册即认证,无需300元认证费

热门文章

  1. MVC框架简易留言板实例
  2. 【.Net实用方法总结】 整理并总结System.IO中MemoryStream类及其方法介绍
  3. oracle 审计设置,oracle数据库审计设置
  4. fuse文件系统调试环境
  5. 完美的word转pdf
  6. 操作系统——linux
  7. TOF,双目,结构光,激光雷达等传感器及相关技术
  8. 梦幻西游手游服务器维护时间,梦幻西游手游5.11维护公告
  9. SpringBoot + Excel 读写技术与实际问题解决
  10. Linq 的使用方法