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

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]




 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/263412.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

HashMap(摘)

1.HashMap简介 HashMap基于哈希表的Map接口实现&#xff0c;是以key-value存储形式存在。&#xff08;除了不同步和允许使用 null 之外&#xff0c;HashMap 类与 Hashtable 大致相同。)HashMap 的实现不是同步的&#xff0c;这意味着它不是线程安全的。它的key、value都可以为n…

LeetCode—274. H 指数

274. H 指数 题目描述&#xff1a; 给你一个整数数组 citations &#xff0c;其中 citations[i] 表示研究者的第 i 篇论文被引用的次数。计算并返回该研究者的 h 指数。 根据维基百科上 h 指数的定义&#xff1a;h 代表“高引用次数”&#xff0c;一名科研人员的 h指数是指他…

【创业】创业团队的那些事(二)

在上一篇&#xff08;创业团队的那些事&#xff08;一&#xff09;&#xff09;从邮件中看到很多博友的评论&#xff0c;很行赏他们的观点&#xff0c;关于创业团队&#xff0c;我们都有说不完的理论&#xff0c;想不完的创意&#xff0c;干不完的事情&#xff0c;永远无法预知…

日常经典用语、成语及谚语

cross your heart 你发誓       gate - crasher 不请自来的不速之客      take it easy 凡事看开些, 不要太冲动, 不要看得那么重       make yourself comfortable 不用约束 (招待客人时说的话)       you are all wet 你完全误会了       she …

JavaScript复制数组

转载于:https://blog.51cto.com/5880861/1651346

面向对象基础(一)

我想在这个园子里面的新人&#xff0c;还是"掌门人"&#xff0c;都对"面向对象"这几字非常的耳熟了或者有一定的了解。 但当一个初学都在学习面向对象的时候&#xff0c;会遇到一些瓶颈和麻烦&#xff0c;认为面向对象非常的难以理解。 那么本章节主要是让…

有哪些简单粗暴的logo设计方法?

Logo设计在设计的过程中要考虑很多问题&#xff0c;但是如果时间周期比较短&#xff0c;又要求快速出方案的时候&#xff0c;可以走一些捷径。 在设计logo之前要去了解公司的主营业务、公司规模、公司的名字、公司的主要产品针对的用户群体、甲方的个人偏好、公司原有VIS...这些…

大数据——Zookeeper学习笔记

具体代码可以参考&#xff1a; https://github.com/Ostrich5yw/java4BigData

事情在不断的解决中,想念巫英才和张国振

最近这几天逐渐完成了不少事情。俱乐部四场技术沙龙、三场培训讲座总算搞完&#xff0c;俱乐部活动也告一段落&#xff0c;我到下学期也快退休了。不少陈年旧债的手尾也完成了。IBM比赛的事情也在进展中&#xff0c;虽然受到前面事情的影响&#xff0c;不是很如意。RFID项目进入…

Java图片处理(二)图片加水印

图片加水印&#xff0c;是通过图片重叠绘制实现的。实现代码如下&#xff1a;public static void press(String pressImg, String pressText, String targetImg,String fontName, int fontStyle, int color, int fontSize, int x, int y) {try {File _file new File(targetImg…

PreTranslateMessage作用和使用方法

PreTranslateMessage是消息在送给TranslateMessage函数之前被调用的&#xff0c;绝大多数本窗口的消息都要通过这里&#xff0c;比较常用&#xff0c;当需要在MFC之前处理某些消息时&#xff0c;常常要在这里添加代码. MFC 消息控制流最具特色的地方是CWnd类的虚拟函数PreTran…

客户端转向小技巧

ASP和asp.net都有很多转向的方法 还有一个小方法 用Response.Write("<script>parent.location.href[urladdress]</script>")输出一个JAVASCRIPT的转向脚本。 这个方法是在页面文件执行完毕后产生的转向&#xff0c;并且是由发送到客户IE上的JAVASCRIPT执…

C#JsonConvert.DeserializeObject反序列化json字符

需求&#xff1a;需要把第一个id替换掉&#xff0c;在序列化成json dynamic dyn Newtonsoft.Json.JsonConvert.DeserializeObject(json);foreach (var obj in dyn){if (obj.Name "id") {obj.Value dbGuid;break;}}string result Newtonsoft.Json.JsonConvert.Se…

大数据——Zookeeper学习笔记(配置)

具体代码可以参考&#xff1a; https://github.com/Ostrich5yw/java4BigData

20. C# -- Base, this 关键字

Base关键字用途用于从派生类中访问基类的成员&#xff0c;调用基类上已被其他方法重写的方法。指定创建派生类实时应调用的基类构造函数。基类访问只能在构造函数&#xff0c;实例方法或实例属性访问器中进行。从静态方法中使用 base 关键字是错误的。Base 主要用于面向对象开发…

微软技术节(TechFest 2010)最前沿技术汇总

Twitter 替代 微博时代行将过渡&#xff0c;微媒时代即将到来! 不错&#xff0c;所谓的高官|明星|名人|红人就在这里哈www.gg3m.com! 马上关注鸽姆微媒吧&#xff0c;再不来你就要OUT勒~[导读]微软亚洲研究院的技术依然是这次技术节的重要组成部分&#xff0c;约有36个项目被选…

case的深入用法

1.case语句中能不能对一个变量进行赋值 转载于:https://www.cnblogs.com/13306511495/archive/2006/10/24/538827.html

MSN Messenger终于好使了

随手写下来&#xff0c;可能其他朋友有些用处。我的机器是windows 2000 prof&#xff0c;公司使用ms proxy&#xff0c;所以我机器上用了ms proxy的客户端mspclnt。原来用msn7.0&#xff0c;在11月ms自己服务器升级之后就开始不太正常。于是从网上找到了msn7.5&#xff0c;想办…

Oracle数据库优化器的优化方式

Oracle是世界领先的信息管理软件开发商&#xff0c;因其复杂的关系数据库产品而闻名。本文介绍Oracle优化器&#xff0c;它是一个非常好用的工具。Oracle在执行一个SQL之前&#xff0c;首先要分析一下语句的执行计划,然后再按执行计划去执行。分析语句的执行计划的工作是由优化…

Linux任务计划

1、at —— 在未来某个时间点执行一次某任务使用实例&#xff1a;at 时间&#xff1a;设定某个时间点at>COMMANDat>Ctrld指定时间&#xff1a;绝对时间&#xff1a;HH:MM&#xff0c;DD.MM.YY&#xff0c;MM/DD/YY相对时间&#xff1a;now3minutes单位&#xff1a;minute…