Javascript数组---slice(),splice()方法的区别

**

slice()

**

slice()可以理解为截取数组的方法,参数可以是一个或者两个。

当slice()的参数有两个的时候,第一个参数表示开始截取的位置,第二个参数表示截取结束的位置,把起始位置之间的值取出来变成数组作为返回值(包括开始位置的值,不包括结束位置的值),因此slice()是不会改变原数组的。

当slice()的参数只有一个的时候,参数表示开始截取的位置,然后从这个位置把后面的值全部截取下来。

看例子:

    var array=[0,1,2,3,4,5,6];

    console.log(array);            //[0, 1, 2, 3, 4, 5, 6]

    var array2=array.slice(3,6);   //两个参数
    console.log(array);            //[0, 1, 2, 3, 4, 5, 6]
    console.log(array2);           //[3, 4, 5]

    var array2=array.slice(3);     //一个参数
    console.log(array);            //[0, 1, 2, 3, 4, 5, 6]
    console.log(array2);           //[3, 4, 5, 6]

特别的是,slice()的参数可以是负数,如果参数是负数要先转换为正数,例如slice(-3),转换方法有两个:
1,把参数值加上数组长度得到位置;
2,-3即数组倒数第三个位置(数组最后一个数的位置是-1);

看例子:

    var array=[0,1,2,3,4,5,6];

    console.log(array);            //[0, 1, 2, 3, 4, 5, 6]

    var array2=array.slice(-2);     //一个参数
    console.log(array);            //[0, 1, 2, 3, 4, 5, 6]
    console.log(array2);           //[5, 6]

    var array2=array.slice(-4,-2);     //两个参数
    console.log(array);            //[0, 1, 2, 3, 4, 5, 6]
    console.log(array2);           //[3, 4]

最后一种情况就是,slice()的开始位置等于或者大于结束位置,这时候返回的会是一个空数组。

看例子:

    var array=[0,1,2,3,4,5,6];

    console.log(array);            //[0, 1, 2, 3, 4, 5, 6]

    var array2=array.slice(6,3);   
    console.log(array);            //[0, 1, 2, 3, 4, 5, 6]
    console.log(array2);           //[]

**

splice()

**
虽然splice()只比slice()多了一个字母,但是splice()的功能强大了很多,它可以根据参数的不同,分别实现删除,插入,替换操作。

话不多说,下面一一举例:
删除:
这时候splice()有两个参数,第一个参数代表开始删除的位置,第二个参数代表要删除的个数,要注意的是,splice()会改变原数组的值,原数组保留的是删除后的数组,然后把删除掉的项组成一个新数组作为返回值。

    var array=[0,1,2,3,4,5,6];

    console.log(array);            //[0, 1, 2, 3, 4, 5, 6]

    var array2=array.splice(3,2);
    console.log(array);            //[0, 1, 2, 5, 6]
    console.log(array2);           //[3,4]

插入
这时候splice()的参数不确定,但是至少会有两个参数,跟删除操作类似,第一个参数代表插入位置,第二个参数代表删除个数,由于插入操作不用删除,所以第二个参数是0。然后接下来的第三个第四个之后的参数,全部作为插入值插进原数组里面,由于没有删除掉任何项,所以返回值会是一个空数组。如果没有插入值,则原数组不变,返回值依旧为空数组。

    var array=[0,1,2,3,4,5,6];

    console.log(array);         //[0, 1, 2, 3, 4, 5, 6]

    var array2=array.splice(3,0,'a','b');
    console.log(array);         //[0, 1, 2, "a", "b", 3, 4, 5, 6]
    console.log(array2);        //[]

替换
因为替换可以理解为先删除再插入,所以替换操作是删除+插入的结合。第一个参数代表开始替换的位置,第二个参数代表删除个数,然后接下来的第三个第四个之后的参数,全部作为替换值从指定位置插进原数组里面。同样地,返回值会是原数组中删除掉的项,要注意的是,删除项个数跟插入项个数互不影响,不一定要相等。

    var array=[0,1,2,3,4,5,6];

    console.log(array);         //[0, 1, 2, 3, 4, 5, 6]

    var array2=array.splice(3,2,'a','b','c');
    console.log(array);         //[0, 1, 2, "a", "b", "c", 5, 6]
    console.log(array2);        //[3,4]

同样地,splice()的参数也一样可以是负数,具体跟slice()方法一样,这里就不再重复了。

小结:
不同点:
1.slice()不会改变原数组的值,而splice()会改变原数组的值。
2.slice()是先复制原数组的值作为备份,然后在上面进行操作,不影响原数组的值;splice()是直接在原数组上进行操作,所以影响了原数组的值。
3.splice()的功能远远大于slice(),因为slice()的结果可以由splice()方法的删除操作得出。

相同点:
2.slice()和splice()都会返回一个新数组,组成新数组的项都是从原数组中去掉的项(对slice()方法来说是指在备份数组中去掉的值)。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值