在 JavaScript 中,我们可以使用多种方法来截取字符串或数组的部分内容。以下是常用的截取方法:
substring(startIndex, endIndex)
:从指定的起始索引startIndex
处开始截取字符串,直到endIndex
处的前一个字符为止。如果省略endIndex
参数,则截取到字符串末尾。let str = "Hello, World!"; let subStr = str.substring(7, 12); // 截取从索引7到索引11的字符 console.log(subStr); // 输出:World
substr(startIndex, length)
:从指定的起始索引startIndex
处开始截取指定长度length
的字符。let str = "Hello, World!"; let subStr = str.substr(7, 5); // 从索引7开始截取5个字符 console.log(subStr); // 输出:World
slice(startIndex, endIndex)
:从指定的起始索引startIndex
处开始截取字符串,直到endIndex
处的前一个字符为止。与substring
方法类似,但可以处理负数索引。let str = "Hello, World!"; let subStr = str.slice(7, 12); // 截取从索引7到索引11的字符 console.log(subStr); // 输出:World
注意:
-
substring
和substr
方法也可以处理负数索引,但是处理方式不同。substring
方法会将负数索引视为 0,而substr
方法会将负数索引视为字符串末尾开始的位置。 -
对于数组,我们可以使用
slice(startIndex, endIndex)
方法来截取数组的部分内容,与字符串的slice
方法类似。let arr = [1, 2, 3, 4, 5]; let subArr = arr.slice(1, 4); // 截取索引1到索引3的元素 console.log(subArr); // 输出:[2, 3, 4]
-
slice还可以用来数组拷贝:arr.slice(0)。 同样我们也可以通过arr.concat()方法来实现数组copy,但值得注意的是这两个都是浅克隆。
const originalArray = [1, 2, [3, 4]]; const copiedArray1 = originalArray.slice(0); const copiedArray2 = originalArray.concat(); originalArray[0] = 100; // 修改原数组的第一个元素 originalArray[2][0] = 300; // 修改原数组的第三个元素中的第一个元素 console.log(originalArray); // [100, 2, [300, 4]] console.log(copiedArray1); // [1, 2, [300, 4]],修改了原数组的第三个元素 console.log(copiedArray2); // [1, 2, [300, 4]],修改了原数组的第三个元素