项目开发中总会把splice slice split 这三个方法的使用搞混,趁着今天有时间,写篇博客记录一下,希望以后不会再犯这个低级的错误了。
slice
slice 截取数组生成子数组,但是不破坏数组本身
slice 可以传入两个参数,两个参数可填可不填(两个参数的取值可以是正负数和0)
//不传入参数
let arr = [1, 2, 3, 4, 5, 6];
let tempArr = arr.slice();
console.log(arr); //[1, 2, 3, 4, 5, 6]
console.log(tempArr ); //[1, 2, 3, 4, 5, 6]
//传入两个参数 arr.slice(start, end) 表示从第start 个数组元素开始截取 ,截取到第end - 1个数组元素
// 截取的时候记住 **包头不包尾**
//从第一个元素开始截取,直接截取到数组的尾部
tempArr = arr.slice(1);
console.log(arr); //[1, 2, 3, 4, 5, 6]
console.log(tempArr ); //[2, 3, 4, 5,6]
//从倒数第二个元素开始截取 ,直接截取到数组的尾部
tempArr = arr.slice(-2);
console.log(arr); //[1, 2, 3, 4, 5, 6]
console.log(tempArr); // [5, 6]
//从第一个元素开始截取,截取到第5个数组元素
let arr = [1, 2, 3, 4, 5, 6];
let tempArr = arr.slice(1, 5);
console.log(arr); //[1, 2, 3, 4, 5, 6]
console.log(tempArr); // [ 2, 3, 4, 5]
//从第一个元素开始截取数组,截取到倒数第二个元素
tempArr = arr.slice(1, -2);
console.log(arr); //[1, 2, 3, 4, 5, 6]
console.log(tempArr); //[2, 3, 4]
//从倒数第五个元素开始截取,截取到倒数第二个元素
tempArr = arr.slice(-5, -2);
console.log(arr); //[1, 2, 3, 4, 5, 6]
console.log(tempArr); [2, 3, 4]
字符串本身也具有slice方法,它的使用方式等同于数组的使用方法。
splice
splice也是应用于数组,这是一个比较强大的方法,可以对数组进行增删改,splice可以传入多个参数。splice会破坏原数组的结构
以下使用该方法对数组进行增删改
- 增加数组元素
//从第start个元素开始添加元素
let arr = [1, 2, 3, 4, 5, 6];
let tempArr = arr.splice(3, 0, 99);
console.log(tempArr); // []
console.log(arr); // [1, 2, 3, 99, 4, 5, 6]
- 删除数组元素
//从第start个元素进行删除,删除end个元素
let arr = [1, 2, 3, 4, 5, 6];
let tempArr = arr.splice(1, 3);
console.log(arr); // [1, 5, 6]
console.log(tempArr); //[2, 3, 4] 返回删除的元素
- 修改数组元素
//修改第start个数组元素
let arr = [1, 2, 3, 4, 5, 6];
let tempArr = arr.splice(3, 1, 99);
console.log(arr); //[1, 2, 3, 99, 5, 6]
console.log(tempArr); //[4] 返回被修改的元素
split
split 是应用于字符串的方法,该方法是对字符串中的特定字符进行切割进而转化为数组
split可以传入两个参数,第一个参数是要切割的特定的字符串,第二个参数是一个长度值,可选。该参数可指定返回的数组的最大长度。如果设置了该参数,返回的子串不会多于这个参数指定的数组。如果没有设置该参数,整个字符串都会被分割,不考虑它的长度。
实例
let str = '1,2,3,4,5,6,7,8';
let arr = str.split(',');
console.log(arr);// ["1", "2", "3", "4", "5", "6", "7", "8"]
arr = str.split(',', 5)
console.log(arr); //["1", "2", "3", "4", "5"]