W3School上面讲的很详细了,但是还是想总结一下下
splice和slice看起来很相似,具体的用法也老是模糊不清
定义与用法
splice:该方法 会 改变原始 数组,向/从数组中添加/删除项目,然后返回被删除的项目。(增删改)
slice():该方法 不会 改变原始 数组,可从已有的数组中返回选定的元素。(查)
splice语法:arrayObject.splice(index,howmany,item1,…..,itemX)
splice参数 描述
- index 必需。整数,规定添加/删除项目的位置,使用负数可从数组结尾处规定位置。
- howmany 必需。要删除的项目数量。如果设置为 0,则不会删除项目。
- item1, …, itemX 可选。向数组添加的新项目。
slice语法:arrayObject.slice(start,end)
slice参数 描述
- start 必需。规定从何处开始选取。如果是负数,那么它规定从数组尾部开始算起的位置。也就是说,-1 指最后一个元素,-2
指倒数第二个元素,以此类推。 - end 可选。规定从何处结束选取。该参数是数组片断结束处的数组下标。如果没有指定该参数,那么切分的数组包含从 start
到数组结束的所有元素。如果这个参数是负数,那么它规定的是从数组尾部开始算起的元素。
方法 | slice | splice |
---|---|---|
参数 | index,end | index,lendth,para1,para2 |
用法 | 查:从index到end 的元素 | 改:从index往后length长度的元素替换为para1,para2… |
备注 | 1.不改变原数组 2.返回值是index~end-1 3.下标不包括end 4.end缺省,查到数组最后一个 5.index为负数,倒数index个往后查 | 1.改变原数组 2.返回值是index~index+length-1 的数组 3.下标不包括index+length 4.end缺省,改:index~最后 5.index为负数,倒数index个往后改 |
实例 | var arr = [1,2,3,4,5,6,7]; 取第5个数:arr.slice(4,5);//[5] 取倒数第2个数:arr.slice(-2,-1);//[6] 取前3个数:arr.slice(0,3);//[1,2,3] 取第4,5个数:arr.slice(3,5);//[4,5] 取第4个数往后:arr.slice(3);//[4,5,6,7] 取最后3个数:arr.slice(-3);//[5,6,7] | var arr = [1,2,3,4,5,6,7]; 删第5个数:arr.splice(4,1);//返回:[5],arr:[1,2,3,4,6,7] 删倒数第2个数arr.splice(arr.length-1-1,1);//返回:[6],arr:[1,2,3,4,5,7] 删除前3个数:arr.splice(0,3);//返回[1,2,3],arr:[4,5,6,7] 删除最后3个数:arr.splice(arr.length-1-2);//返回:[5,6,7],arr:[1,2,3,4] 替换第3个数为“a”:arr.splice(2,1,”a”)//返回:[3],arr:[1,2,”a”,4,5,6,7] 替换第3,4个数为”a”,”b”,”c”:arr.splice(2,2,”a”,”b”,”c”)//返回:[3,4],arr:[1,2,”a”,”b”,”c”,5,6,7] |