关于
slice
和splice
的区别总结如下:1、用途不同
slice
用于截取
数组的指定部分
splice
用于删除/新增/替换
数组中的元素2、是否改变原数组
slice
不改变原数组
,会返回一个新数组
splice
改变原数组
1、slice 切片
- 可以用来从数组中
截取
指定元素 - 该方法
不会改变元素数组
,而是将截取到的元素封装到一个新数组
中返回 - 参数:
- 1.截取
开始
的位置的索引,包含
开始索引 - 2.截取
结束
的位置的索引,不包含
结束索引- 第二个参数可以省略不写,此时会截取从开始索引往后的所有元素
- 索引可以传递一个负值,如果传递一个负值,则从后往前计算
-1
倒数第一个-2
倒数第二个
- 1.截取
var arr = ["孙悟空","猪八戒","沙和尚","唐僧","白骨精"];
var result = arr.slice(1,4); // ['猪八戒', '沙和尚', '唐僧']
result = arr.slice(3); // ['唐僧', '白骨精']
result = arr.slice(1,-2); // ['猪八戒', '沙和尚']
2、splice
- 可以用于
删除/新增/替换
数组中的指定元素 - 使用
splice()
会影响到原数组,会将指定元素从原数组中删除 - 并将
被删除的元素
作为返回值
返回 - 参数:
- 第一个,表示
开始位置的索引
- 第二个,表示
删除的数量
- 第三个及以后:可以传递
一些新的元素
,这些元素将会自动插入到开始位置索引前边
- 第一个,表示
arr = ["孙悟空","猪八戒","沙和尚","唐僧","白骨精"];
var result = arr.splice(3,0,"牛魔王","铁扇公主","红孩儿");
console.log(arr); // ['孙悟空', '猪八戒', '沙和尚', '牛魔王', '铁扇公主', '红孩儿', '唐僧', '白骨精']
console.log(result); // []