可能是因为
Splice,Slice,Split三种常见的JavaScript方法名称非常类似的原因,这三个方法的使用场景和操作方式经常被开发者混淆
希望本文撰写完成后可巩固自身对三种方法的理解
JavaScript允许在同一个数组中容纳不同类型的元素,数组可以通过如下方式声明
let arrayDefinition = []; // Array declaration in JS对于包含不同类型元素的数组,也可以简单地声明
let array = [1, 2, 3, "hello world", 4.12, true];
slice()方法复制给定部分的数组,并将复制的部分作为新数组返回
slice()方法不会修改原数组
array.slice(from, until);- from:从元素索引开始切割数组
- until:将数组切歌至直到另一个元素索引
假设希望切割数组的前三个元素
let array = [1,2,3,4,5];
let newArray = array.slice(0,3);
console.log(newArray);
// 1,2,3值得注意的是unitl所在索引所代表的元素并不包含在被切割的数组中,亦即前包后不包原则
slice()方法也可以用于String类型的变量
let testString = '12345';
let newString = testString.slice(0,3);
console.log(newString);
// 123
splice()方法通过修改或删除元素的方式修改原数组
array.splice(index, number_of_elements);- index是删除元素的起点,索引编号小于index的元素将不会被删除
- number_of_elements是将被删除的元素的个数
array.splice(2); // 索引大于等于2的元素都将会被删除需要注意的是,如果不添加参数
number_of_elements,所有从给定的索引位置开始的元素都贱会被删除
let array = [1,2,3,'hello',4.5,true];
let deletedArray = array.splice(2,1,);
console.log(deletedArray) //[3]
console.log(array) // [1,2,'hello',4.5,true]在存在第二个参数的情况下,将会从指定索引位置开始删除指定量个元素,循环调用时将会在给定的索引目录本身元素不存在时结束
需要添加元素时,需要向
splice()方法提供可能存在的第三,第四...第n个元素
假设希望在数组的开头增加
a,b两个元素
let array = [1,2,3,'hello',4.5,true];
array.splice(0,0,'a','b');
// 增加元素的操作将会返回空数组
console.log(array);
// [a,1,2,3,'hello',4.5,true]相较之于
splice()和slice()方法大多数情况下作用于Array类型的情况下,split()方法只能作用于String类型的变量上
split()方法将一个字符串分成子串并将它们组合为数组返回
string.split(separator, limit);- separator: 定义了以什么方式分割字符串
- limit: 定义了分割的次数
let array = [1,2,3,'hello',4.5,true];
let myString = array.toString();
// myString '1,2,3,hello,4.5,true'
let newArray = myString.split(",", 3);
// newArray ['1','2','3']myString以
,为标准切割字符串并保留前三个元素
值得注意的是,如果使用
myString.split("")切割字符串,字符串将会以每个字符为分割线将每个字符作为一个子字符串切割
- Slice()
- 从数组中拷贝元素
- 返回新数组
- 不修改原数组
- 前包尾不包的切割方式
- 既可以应用于数组也可以应用于字符串
- Splice()
- 向数组中添加或删除元素
- 删除时返回被删除的元素构成的数组
- 添加时返回空数组
- 修改原数组
- 只可以应用于数组类型变量
- Spilt()
- 将字符串变量拆分为字串数组
- 返回值为数组类型
- 包含两个可选参数
separator和limit - 不会需改原字串
- 只可以应用于字符串类型