Array.slice方法和splice方法在众多的JS数组中属于比较复杂的一个方法,而且容易记混。搜索网络上很多资料都没有发现系统的总结。特别归纳如下,不完全处还希望各位批评指正。

 一、slice方法

格式:

arrayObj.slice(start, [end])

功能:返回指定数组的一个子数组,并不修改原来数组。

参数:

start:必需。arrayObj的指定部分的开头。

end:可选。arrayObj的指定部分的结尾。

数组使用来看,这个方法类似于串操作中的substr函数。但是,当参数为负数时,情况就复杂了。

具体情况详见下面的代码示例:

var a1=[1,3,5,7,9];

var n1=a1.slice(0); //n1=>[1,3,5,7,9]效果与a1.slice(0,5)一样

var n1=a1.slice(1); //n1=>[3,5,7,9]

var m1=a1.slice(0,2);  //m1=>[3,5],2代表截取子串的长度

var m1=a1.slice(0,5); //m1=>[1,3,5,7,9],5代表截取子串的长度

var m1=a1.slice(0,15); //m1=>[1,3,5,7,9],15大于最大长度,不再起作用

var m1=a1.slice(0,-1); // m1=>[1,3,5,7]

var m1=a1.slice(0,-2); // m1=>[1,3,5]

var m1=a1.slice(0,-5); // m1=>[]

var m1=a1.slice(0,-15); // m1=>[]

var n2=a1.slice(-1); //n2=>[9]

var n3=a1.slice(-2); //n3=>[7,9]

var nx=a1.slice(-5); // nx=>[1,3,5,7,9]

var ny=a1.slice(-10); // ny=>[1,3,5,7,9]

[1,2,3,4,5,6,7,8,9].slice(-5); //=>[5,6,7,8,9]

[1,2,3,4,5,6,7,8,9].slice(-5,-1); //=>[5,6,7,8]

[1,2,3,4,5,6,7,8,9].slice(-5,-3); //=>[5,6]

[1,2,3,4,5,6,7,8,9].slice(-5,-10);  //=>[]

[1,2,3,4,5,6,7,8,9].slice(-5,0); //=>[]

[1,2,3,4,5,6,7,8,9].slice(-5,1); //=>[]

上述代码片断已经概括了slice方法的所有使用情形,总结如下:

(1)如果start>=0:

①    当没有参数end时,从原数组中返回从索引号start开始直到最后元素的子数组。

②    当参数end>=0时,从原数组中返回从索引号start开始的end个元素的子数组。此时,如果end>数组最大长度,则返回length个元素组成的子数组。

(2)如果start<0:

①    当没有参数end时,从原数组尾部截取|start|个元素组成的子数组。此时,如果|start|>数组最大长度,则返回length个元素组成的子数组。

②    当参数end<0,则从没有参数end时取得的子串,例如sub1,尾部截去|end|个元素。此时,当|end|>sub1.length,返回空子数组。

③    当参数end>=0,返回空子数组。

二、splice方法

格式:

       arrayObject.splice(index,howmany,item1,.....,itemX)

  功能:splice() 方法向/从数组中添加/删除项目,然后返回被删除的项目。      
       整数,规定添加/删除项目的位置,使用负数可从数组结尾处规定位置。要删除的项目数量。如果设置为 0,则不会删除项目。:  Array  包含被删除项目的新数组,如果有的话。:   splice() 方法可删除从 index 处开始的零个或多个元素,并且用参数列表中声明的一个或多个值来替换那些被删除的元素。如果从 arrayObject 中删除了元素,则返回的是含有被删除的元素的数组。

具体情况详见下面的代码示例:

        var arr=[1,2,3,4,5,6]; var arr2=arr.splice(2,4); console.log("arr2=",arr2,",arr=",arr);    //arr2= [3, 4, 5, 6] ,arr= [1, 2]

JS服务器端开发基础篇(Array.slice方法和splice方法)相关推荐

  1. Js slice()方法和splice()方法

    1.slice(start,end) 从已有的数组中返回选定元素,参数start必填,end选填 <script>delArray();function delArray(){var wo ...

  2. Node.js后端开发 - 基础篇 #18 nodemon工具

    文章目录 前言 nodemon工具简单介绍 nodemon工具安装 nodemon工具使用(node app.nodemon app) nodemon工具使用(npm run start) 前言 上篇 ...

  3. Three.js(2)--->基础篇-Helpers(辅助对象/辅助线)

    在Three.js中有许多的Helper(辅助对象)用来帮助我们的开发. 本篇例举几个常见的,方便理解.以及一些效果 文章目录 前言 一.AxesHelper 二.BoxHelper 三.Box3He ...

  4. TensorFlow2.4 开发 基础篇① 张量和变量 (1)

         TensorFlow2.4 开发 基础篇① 张量和变量(Tensor) 文章会不断更新,喜欢的小伙伴可以帮博主点个赞哟("'▽'") 文章目录 前言 1. 变量 1.1 ...

  5. 一步一步教你使用AgileEAS.NET基础类库进行应用开发-基础篇-通过SQL实现特殊业务...

    前面的四篇文章演示ORM的一些常规操作与配置,通过前面的文章,应用开发人员要可以使用ORM开发出简单的应用,但是,ORM也不是万能钥匙,在业务应用中,还有很多是ORM解决不了的问题,对于这些问题,我们 ...

  6. 一步一步教你使用AgileEAS.NET基础类库进行应用开发-基础篇-演示ORM中的查询

    前文回顾 前面的文章一步一步教你使用AgileEAS.NET基础类库进行应用开发-基础篇-演示ORM的基本操作一文给大家介绍了如果使用ORM实现数据的读取.插入.更新与删除基本业务也讲解了ORM开发基 ...

  7. 【学习记录】第一章 数据库设计-《SQL Server数据库设计和开发基础篇视频课程》...

    一.课程笔记 1.1  软件开发周期 (1)需求分析阶段 分析客户的业务和数据处理需求. (2)概要设计阶段 设计数据库的E-R模型图,确认需求信息的正确和完整. /* E-R图:实体-关系图(Ent ...

  8. 数据库应用程序开发基础篇—— .NET中SQL Server数据库的操作C#篇之一

    数据库应用程序开发基础篇-- .NET中SQL Server数据库的操作C#篇之一 写在前面:前面介绍了数据库系统的基本概念,SQl语句基本使用方法,接下来通过学习具体语言和具体数据库结合的应用开发来 ...

  9. Android App开发基础篇—数据存储(SQLite数据库)

    Android App开发基础篇-数据存储(SQLite数据库) 前言:Android中提供了对SQLite数据库的支持.开发人员可以在应用中创建和操作自己的数据库来存储数据,并对数据进行操作. 一. ...

最新文章

  1. 文件上传--Smartupload上传组件【上】
  2. 这次是在没有外网yum仓库的情况下搭建内网yum仓库和无人值守pxe装机
  3. WebAPi接口安全之公钥私钥加密
  4. 考研【复试技巧】如果复试时太紧张,遇到不会的问题只能凉了吗?这些技巧收下!
  5. Java NIO原理和使用
  6. DDD分层架构的三种模式
  7. .NET文档生成工具ADB[更新至2.3]
  8. HTML示例04---文字
  9. python3 asyncio 不阻塞_Python3 asyncio异步框架,让我崩溃的点
  10. 下岗工人到达退休年龄,养老保险未缴纳满15年,补缴合适吗?
  11. 插入网站连接_网站开发与网页制作
  12. slic3r prusaslicer编译
  13. 台湾Google云计算计划负责人叶平讲解云计算
  14. ctf writeup之程序员密码
  15. 【Json转换为实体类】
  16. 学习笔记-----浅谈汇编指令CMP运行机制
  17. unity打开ppt 打包后也可以运行
  18. CAMIA:OpenSignal:2018年新加坡移动网络报告
  19. 关于认知力的学习总结
  20. 关于硬盘扇区的基本知识

热门文章

  1. Keras vs PyTorch:谁是第一深度学习框架?
  2. 2022年六大值得关注的边缘计算趋势
  3. LSTM之父撰文,纪念这位图灵奖遗珠、“AI理论之父”
  4. 如何结合因果与强化学习?看最新《因果强化学习:动机,概念,挑战与应用》报告,85页ppt...
  5. 剑桥大学2020《AI全景报告》出炉,177页ppt
  6. 三大运营商集体为电费发愁,宣布“智能化关闭5G基站”,5G建设能省则省!
  7. DeepMind 的2017:有 AlphaGo,更有社会责任
  8. 李开复:明年会有一批AI公司倒闭
  9. 开源神经网络框架Caffe2全介绍
  10. 上班第一天公司就倒闭了??? | 每日趣闻