JavaScript中数组的splice方法和slice方法详解

JavaScript中数组的splice方法和slice方法详解
最近在做一些算法题,不能说不知道splice方法和slice方法怎么用,但是总是写出来有点点小问题,干脆就整理一下,再试两个小例子写一篇文章,彻底弄明白。
splice方法
splice() 方法通过删除现有元素和/或添加新元素来更改一个数组的内容。
一般使用的格式是这样的

array.splice(start) array.splice(start, deleteCount) array.splice(start, deleteCount, item1, item2, ...)

【JavaScript中数组的splice方法和slice方法详解】其中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()** 方法返回一个新的数组对象,这一对象是一个由 beginend 决定的原数组的浅拷贝(包括 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 = 1 let b = a.splice(i,i+1) //表示从i这里取长度为1的数组出来

两者区别还挺大的,小心别每次第二个参数用错了

    推荐阅读