【JavaScript】中三个容易混淆的方法slice、splice和split
·
在JavaScript中,slice、splice和split是三个常用但容易混淆的方法,它们的用途、作用对象和行为差异显著。以下是详细对比及用法说明:
一、核心区别
| 特性 | slice |
splice |
split |
|---|---|---|---|
| 作用对象 | 数组/字符串 | 数组(仅数组) | 字符串(仅字符串) |
| 是否修改原对象 | 否(返回新值) | 是(直接修改原数组) | 否(返回新数组) |
| 返回值 | 截取的新数组/子字符串 | 删除的元素组成的数组 | 分割后的字符串数组 |
| 参数含义 | 起始索引、结束索引(可选) | 起始索引、删除数量(可选)、添加元素(可选) | 分隔符、分割次数(可选) |
二、详细用法
1. slice:截取片段(不修改原对象)
作用:从数组或字符串中截取指定范围的元素/字符,返回新值,原对象不变。
语法:
- 数组:
array.slice(start[, end]) - 字符串:
string.slice(start[, end])
参数:
start:起始索引(包含),负数表示从末尾倒数(如-1为最后一个元素)。end:结束索引(不包含),省略则截取到末尾。
示例:
// 数组用法
const arr = [1, 2, 3, 4, 5];
const newArr = arr.slice(1, 4); // [2, 3, 4]
console.log(arr); // [1, 2, 3, 4, 5](原数组不变)
// 字符串用法
const str = "hello world";
const newStr = str.slice(2, 7); // "llo w"
2. splice:数组增删改(修改原数组)
作用:向数组中添加/删除元素,直接修改原数组,返回被删除的元素数组。
语法:array.splice(start[, deleteCount[, item1[, item2[, ...]]]])
参数:
start:起始索引(负数从末尾倒数)。deleteCount:要删除的元素数量(省略则删除到末尾,0则不删除)。item1...:要添加到数组的新元素。
示例:
const arr = [1, 2, 3, 4, 5];
// 删除:从索引1开始删2个元素
const deleted = arr.splice(1, 2); // [2, 3]
console.log(arr); // [1, 4, 5](原数组已修改)
// 添加:从索引2开始删0个,添加6、7
arr.splice(2, 0, 6, 7);
console.log(arr); // [1, 4, 6, 7, 5]
// 替换:从索引3开始删1个,添加8
arr.splice(3, 1, 8);
console.log(arr); // [1, 4, 6, 8, 5]
3. split:字符串分割为数组(不修改原字符串)
作用:将字符串按指定分隔符分割成数组,返回新数组,原字符串不变。
语法:string.split(separator[, limit])
参数:
separator:分隔符(字符串/正则表达式),""则分割每个字符。limit:可选,限制分割后的数组长度。
示例:
const str = "a,b,c,d";
// 按逗号分割
const arr1 = str.split(","); // ["a", "b", "c", "d"]
// 限制分割次数
const arr2 = str.split(",", 2); // ["a", "b"]
// 按空字符串分割(每个字符)
const arr3 = "hello".split(""); // ["h", "e", "l", "l", "o"]
三、总结记忆
slice:“切片”,只读截取,不破坏原数据(数组/字符串通用)。splice:“拼接/剪接”,数组专用,可增删改,直接修改原数组。split:“分割”,字符串专用,转数组,不修改原字符串。
更多推荐
所有评论(0)