今天写一道算法题时候用了splice但是没写对,感觉跟slice有点弄混
总结下slice 和splice的用法
slice
定义和用法
slice() 方法选取基于索引的元素的子集。
子集是一个属于大的集合中的一部分的集合。
该方法用于通过开始点和结束点来限制组合中元素的选择:start 参数是创建子集的开始索引(从 0 开始),stop 参数是一个可选的结束点。
例如:
一个数组var arr=[5,8,9,8,5,3,1,4,2,7];
一个参数
正数
arr.slice(3)
得到[8,5,3,1,4,2,7]
即:从角标为3的位置开始(包括角标为3的数据)往后的数据
负数
arr.slice(-3)
得到:[4,2,7]
即:倒着数第三个开始向后所以数据
两位参数
正数
arr.slice(3,6)
得到:[8,5,3]
即:从角标为3开始到角标为6的数据前面一个数据即选择范围为角标为3-5的数据
负数
arr.slice(-5,-3)
得到[3,1]
即:-5到-4的的数据
都是向后数数据返回
splice
定义和用法
splice() 方法用于添加或删除数组中的元素。
注意:这种方法会改变原始数组。
返回值
如果仅删除一个元素,则返回一个元素的数组。 如果未删除任何元素,则返回空数组。
例如:
两个参数
一个数组var arr=[5,8,9,8,5,3,1,4,2, 7];
正数
arr.splice(3,6)
console.log(arr)返回[5,8,9,7]
如果直接console.log(arr.splice)则返回[8,5,3,1,4,2]
就是说 arr.splice是选择了需要删除的数组
arr只剩下了删除后的数组
这样的话也可以这样用比如说你想去个数组的角标3往后6位就可以用这种方法
直接var b=arr.splice(3,6);
这样得到的b就恰好是角标3往后6位
负数
同理arr.splice(-n,m)
倒数第n个数开始数m位为要删除的数组,如果m大于剩余位数则取剩余位数
单一个参数
正数
arr.splice(3);得到的是0-角标2的数组
选中要删除的是角标3开始一直到数组末尾
负数
如果这个数为负意思和slice相同,都是从末尾向前数第几个开始向后到数组末为选中需要删除的数据
如:b=arr.splice(-3);得到b为[4,2,7,];
原数组arr为[5,8,9,8,5,3,1]