JS数组对象的splice()和slice()的区别

来源:互联网 发布:每日生产报表软件 编辑:程序博客网 时间:2024/06/05 07:16

splice()和slice()

                           

Hello,everybody~

今天来个小细节的东西,js大家都不陌生了,不知道对js数组对象的几个方法还有没有印象,今天就来深入分析一下~

数组对象中有两个比较相似的方法——splice和splice,看着很像,就是多了一个p,但是用法却相当不一样。

1、splice()

定义

用于插入、删除或替换数组的元素,返回被删除的项目。

语法

arrayObject.splice(index,howmany,element1,......,elementX)

参数

3个参数  2个必需  1个可选
① index:必需。该参数是开始插入和(或)删除的数组元素的下标,必须是数字。整数,规定添加或删除项目的位置,使用负数,可以从数组结尾处规定位置。
② howmany:必需。要删除的数量,规定应该删除多少元素。必须是数字,但可以是 "0"。
如果未规定此参数,则删除从 index 开始到原数组结尾的所有元素。
③ 第3个参数可选 在参数1的位置处,增加一个或多个项目。返回值是删除的元素。
element1  可选。规定要添加到数组的新元素。从 index 所指的下标处开始插入。
elementX  可选。可向数组添加若干元素。  


返回值

如果从 arrayObject 中删除了元素,则返回的是含有被删除的元素的数组。
splice() 方法可删除从 index 处开始的零个或多个元素,并且用参数列表中声明的一个或多个值来替换那些被删除的元素。
splice() 方法会直接对数组进行修改。

写个小案例:
var color = new Array('red','blue','yellow','black');var color2 = color.splice(2,3,'brown','pink');alert(color);     //  输出 red,blue,brown,pinkalert(color2);    //  输出 yellow,black



扩展
splice()方法还可以用到数组去重中  代码如下:
<!DOCTYPE html><html><head><meta charset="UTF-8"><title></title></head><body>  <script type="text/javascript">             var a=[1,4,1,6,4];             for(var i=0;i<=a.length-1;i++){        for(var j=i+1;j<a.length-1;j++){          if(a[i]===a[j]){          a.splice(j,1);          j- -;           }         }          }        document.write(a);        </script></body></html>


2、slice()

定义

slice() 方法可截取字符串的某个部分,并以新的字符串返回被提取的部分。

语法

stringObject.slice(start,end)

参数

start:要抽取的片断的起始下标。
如果是负数,则该参数规定的是从字符串的尾部开始算起的位置。
也就是说,-1 指字符串的最后一个字符,-2 指倒数第二个字符,以此类推。
end:紧接着要抽取的片段的结尾的下标。
若未指定此参数,则要提取的子串包括 start 到原字符串结尾的字符串。
如果该参数是负数,那么它规定的是从字符串的尾部开始算起的位置。

返回值

一个新的字符串。包括字符串 stringObject 从 start 开始(包括 start)到 end 结束(不包括 end)为止的所有字符。


说明

String 对象的方法 slice()、substring() 和 substr() (不建议使用)都可返回字符串的指定部分。slice() 比 substring() 要灵活一些,因为它允许使用负数作为参数。slice() 与 substr() 有所不同,因为它用两个字符的位置来指定子串,而 substr() 则用字符位置和长度来指定子串。
还要注意的是,String.slice() 与 Array.slice() 相似。

来看个小案例:
var color = new Array('red','blue','yellow','black');var color2 = color.slice(1,2);alert(color);   //输出   red,blue,yellow,blackalert(color2);   //输出    blue;注意:这里只有第二项一个值


写到这,大家应该都能回忆出来数组对象的很多方法了,今天写的是写法很相像的两个方法,以后还会多多总结,未完待续...... 吐舌头







原创粉丝点击