在JavaScript中,slicesplicesplit是三个常用但容易混淆的方法,它们的用途、作用对象和行为差异显著。以下是详细对比及用法说明:

一、核心区别

特性 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:“分割”,字符串专用,转数组,不修改原字符串。
Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐