JavaScript中数组的splice办法和slice办法详解
最近在做一些算法题,不能说不晓得splice办法和slice办法怎么用,然而总是写进去有点点小问题,罗唆就整顿一下,再试两个小例子写一篇文章,彻底弄明确。
splice办法
splice()
办法通过删除现有元素和/或增加新元素来更改一个数组的内容。
个别应用的格局是这样的
array.splice(start)array.splice(start, deleteCount)array.splice(start, deleteCount, item1, item2, ...)
其中start是批改开始的地位,deleteCount是从start开始删除多少内容,其余的参数如果有的话就示意在start这个地位插入对应的元素。
上面针对边界条件举几个例子
let arr = [1,2,3,4,5]arr.splice()// []arr// [1, 2, 3, 4, 5]arr.splice(-1)// [5]arr// [1, 2, 3, 4]arr.splice(-8)// [1, 2, 3, 4]arr// []
能够看到哈:splice办法会间接批改原数组,同时返回截取的数组内容。如果start是正数,就倒着从后往前截取
因为splice办法是对原数组进行批改
咱们常常用的就是arr.splice(X,X,XXX)这样的模式,而不会把它专门赋值给另一个变量
slice办法
**slice()**
办法返回一个新的数组对象,这一对象是一个由 begin
和 end
决定的原数组的浅拷贝(包含 begin
,不包含end
)。原始数组不会被扭转。
const animals = ['ant', 'bison', 'camel', 'duck', 'elephant'];console.log(animals.slice(2));// expected output: Array ["camel", "duck", "elephant"]console.log(animals.slice(2, 4));// expected output: Array ["camel", "duck"]console.log(animals.slice(1, 5));// expected output: Array ["bison", "camel", "duck", "elephant"]console.log(animals.slice(-2));// expected output: Array ["duck", "elephant"]
非凡例子
let b = [1,2,3,4]b.slice(-2,3)[3]b.slice(-2,4)(2) [3, 4]b.slice(-2,-1)[3]
能够看出,两个参数都能够为正或者负,次要是看区间里是不是有对应的内容,此外,它的取值是[start,end)
个别状况下我是这么用的
let a = [1,2,3]let i = 1let b = a.splice(i,i+1) //示意从i这里取长度为1的数组进去
两者区别还挺大的,小心别每次第二个参数用错了