2020-11-07 07:42:51
在 JavaScript 中,slice() 是用于提取字符串或数组中指定部分的方法。其核心功能是通过指定起始和结束索引,返回一个包含原对象部分内容的新对象,而不会修改原始数据。以下是详细说明:
1. 字符串中的 slice()语法:
str.slice(start, end)start:起始索引(包含),若为负数则从末尾倒数(如 -3 表示倒数第 3 个字符)。
end(可选):结束索引(不包含),未指定则提取到字符串末尾。
索引超出范围时自动截断(如 start 超过字符串长度返回空字符串)。
负索引计算方式:str.length + 负索引(如 "abc".slice(-2, 3) 等价于 "abc".slice(1, 3))。
示例:
const str = "Hello World";console.log(str.slice(0, 5)); // "Hello"(索引 0 到 4)console.log(str.slice(6)); // "World"(从索引 6 到末尾)console.log(str.slice(-5, -1)); // "Worl"(倒数第 5 到倒数第 2 个字符)2. 数组中的 slice()语法:
arr.slice(start, end)浅拷贝元素(若元素是对象,新数组中的引用仍指向原对象)。
常用于数组截取或类数组对象(如 arguments)转换。
示例:
const arr = [1, 2, 3, 4, 5];console.log(arr.slice(1, 4)); // [2, 3, 4]console.log(arr.slice(-3)); // [3, 4, 5]console.log(arr.slice()); // 浅拷贝整个数组:[1, 2, 3, 4, 5]3. 与 substring() 的区别slice() 支持负索引,substring() 不支持(负值会被视为 0)。
substring() 会自动交换参数顺序(若 start > end),而 slice() 返回空字符串。
对比示例:
const str = "example";console.log(str.slice(2, -1)); // "ampl"(索引 2 到倒数第 2 个字符)console.log(str.substring(2, -1)); // "ex"(等价于 substring(0, 2))4. 实际应用场景通过合理利用 slice(),可以高效完成数据截取任务,同时保持代码简洁性。