我一直一直记不住这两个的用法区别,今天专门写一篇文章来记录一下。
首先,我们从英文翻译着手。
slice: 切下;把…分成部分;将…切成薄片
splice: 捻接(绳子);拼接,接合(胶片等);移接(基因);使结婚
其实弄懂了它们各自的英文翻译之后,基本就能摸清这两个方法的用法。
eg:
let arr = [1, 2, 3];
const res = arr.slice(0,1); // 把arr从 0开始切到1, res => [0]
console.log(arr); // [1,2,3], 注意不影响原数数组
let arr = [1, 1, 1];
const res = arr.splice(0, 1, 8); // 如果第三个参数不写,则直接删除从0开始的1个元素。
console.log(res); // [1], 返回被删除的元素
console.log(arr); // 会改变原数组, [8, 1, 1]
slice主要用于从已有的数组中返回选定的元素。
相对来说,splice更复杂更强大一些。能够对原数组做各种调整
splice用法1, 删除元素
// 删除第一个数组元素
let arr = [1,2,3];
arr.splice(0, 1); // 1
console.log(arr); // [2, 3]
splice用法2,添加元素
let arr = [1,2,3];
arr.splice(3, 2, 6, 6); // []
console.log(arr); // [1, 2, 3, 6, 6]
splice用法3,修改元素
let arr = [1,2,3];
arr.splice(2, 2, 6, 6); // [3]
console.log(arr); // [1,2,6,6]
总结:
- slice用于数组的‘切片’功能,类似于把数组切成一部分后使用,不影响原数组。两个参数都是数组下标,分别是需要切片的开始和结束数组下标。
- splice主要用于数组的拼接、移除功能,会影响原数组。一共有三个参数,第一个参数规定了从何处开始添加、删除元素,即数组下标。第二个参数是可添加、删除的个数。第三个参数表示代替的数组元素。