slice()
能够基于当前数组中的一个或者多个项,创建一个新数组。
slice()能接受1个或者2个参数 - 要返回项的起始和结束位置。 不会影响原始数组。
如果只有一个参数,那么slice()则返回从该参数指定位置开始到当前数组末尾的所有项。
如果有两个参数,那么slice()返回起始和结束位置之间的项 - 但不包括结束位置的项。
如果参数中有负数,则用数组长度加上该负数来确定相应的位置。如果结束位置小于起始位置,则返回空数组。
示例如下:
let arr = [1,2,3,4,5];
arr.slice(1); // [2,3,4,5]
arr.slice(1,2); // [2]
arr.slice(1, -2); // 等同于arr.slice(1,3),返回 [2,3]
arr.slice(-6, 3); //第一个参数加上长度仍然小于0,则按0,等同于arr.slice(0,3),返回[1,2,3]
arr.slice(-3, 3); //等同于arr.slice(2,3),返回[3]
arr.slice(1, -4); //等同于arr.slice(1,1), 返回空数组[]
splice()
主要用途是向数组中插入项目,使用方式主要有3种:
1. 删除数组中的某些项目:需要在splice中输入2个参数,要删除的第一项的位置和要删除的数量。如:
let arr = [1,2,3,4,5];
arr.splice(0, 2) // 会删除arr中的前两项,arr此时为[3,4,5]
arr.splice(-2, 1) //等同于splice(3, 1), 返回[4], arr为[1,2,3,5]
2. 在指定位置插入项目:至少3个参数 - 起始位置,0(删除0项)和要插入的项目。项目可以为多项,如:
let arr = [1,2,3,4,5];
arr.splice(2, 0, 'a', 'b'); // 从第二个位置开始,相继插入a, b,arr最后为[1,2,'a','b',3,4,5]
同理,如果第一个参数是负数,那也会用数组长度加上负数来获取相应的位置。
let arr = [1,2,3,4,5];
arr.splice(-2, 0, 'a', 'b') // 等同于(3,0,...),则arr最后为[1,2,3,'a','b',4,5]
arr.splice(-10,0,'a','b') //第一个参数加上数组长度仍为负数,则默认为从数组第零个位置开始插入数据,结果为['a', 'b',1,2,......]
3. 在指定位置删除一些项目,再插入项目(简称替换),和插入一样至少需要3个参数 - 起始位置,n(删除n项)和要插入的项目。可插入多项。插入项目的数量不需要和删除的数量相等。
let arr = [1,2,3,4,5];
arr.splice(0, 1, 'a', 'b'); //从arr[0]开始删除1项,并插入'a'和'b',此时返回[1],arr最终为['a','b',2,3,4,5]
好的,以上。欢迎小伙伴加入讨论~