array slice splice:JavaScript 数组操作利器,slice、splice 与 concat 的区别与用法
在 JavaScript 编程中,数组(Array)是最常用的数据结构之一,熟练掌握数组的操作方法对于高效、清晰地编写代码至关重要。slice、splice 和 concat 是三个经常被提及且功能相似但含义截然不同的数组方法,理解它们的区别,可以避免常见的错误,并写出更优的代码。
slice 方法:提取子数组 (不修改原数组)

slice 方法用于提取一个数组的一部分,并返回一个新的数组,它不会修改原数组。
- 语法:
arr.slice([start[, end]]) - 参数:
start:必需,表示提取的起始索引(包含),如果为负数,则从数组尾部开始计数。end:可选,表示提取的结束索引(不包含),如果省略,则提取到数组末尾,如果为负数,同样从尾部开始计数。
- 行为: 不会改变原数组。
- 示例:
const fruits = ['Apple', 'Banana', 'Cherry', 'Date', 'Elderberry']; // 提取从索引 1 到索引 3(不包含索引 3)的元素 const subArray = fruits.slice(1, 3); console.log(subArray); // 输出: ['Banana', 'Cherry'] console.log(fruits); // 原数组不变: ['Apple', 'Banana', 'Cherry', 'Date', 'Elderberry'] // 提取从索引 -3 开始到末尾的元素 const lastFew = fruits.slice(-3); console.log(lastFew); // 输出: ['Cherry', 'Date', 'Elderberry']
splice 方法:修改数组 (删除/替换/添加元素)

splice 方法用于修改现有数组的内容,它可以删除元素,也可以替换元素,甚至可以添加新元素,它直接修改原数组,并返回被删除的元素组成的数组。
- 语法:
arr.splice([start[, deleteCount[, ...items]]]) - 参数:
start:必需,表示操作的起始索引。deleteCount:可选,表示要删除的元素个数,如果省略,则删除从start开始的所有元素。...items:可选,表示要添加到数组中的新元素。
- 行为: 直接修改原数组。
- 示例:
const numbers = [1, 2, 3, 4, 5]; // 删除从索引 1 开始的 2 个元素 const deleted = numbers.splice(1, 2); console.log(deleted); // 输出: [2, 3] (被删除的元素) console.log(numbers); // 原数组被修改: [1, 4, 5] // 在索引 1 处删除 1 个元素,并添加 'a', 'b' numbers.splice(1, 1, 'a', 'b'); console.log(numbers); // 输出: [1, 'a', 'b', 4, 5]
concat 方法:合并数组 (不修改原数组)

concat 方法用于合并两个或多个数组,此方法不会改变现有的数组,而是返回一个新数组。
- 语法:
arr.concat([item1[, item2[, ...[, itemN]]]]) - 参数: 可以是任意数量的数组或值,如果传入的是数组,则新数组包含该数组的所有元素;如果传入的是值,则直接添加该值。
- 行为: 不会改变原数组,返回一个新数组。
- 示例:
const arrA = [1, 2]; const arrB = [3, 4]; // 合并 arrA 和 arrB const combined = arrA.concat(arrB); console.log(combined); // 输出: [1, 2, 3, 4] console.log(arrA); // 原数组 arrA 不变: [1, 2] // 合并数组和单个元素 const moreNumbers = [5, 6]; const allNumbers = moreNumbers.concat([7], 8, 9); console.log(allNumbers); // 输出: [5, 6, 7, 8, 9]
总结对比:
| 特性 | slice | splice | concat |
|---|---|---|---|
| 主要功能 | 提取子数组 | 修改/删除/添加/替换数组元素 | 合并数组 |
| 修改原数组 | 否 | 是 | 否 |
| 返回值 | 被提取的子数组 | 被删除的元素组成的数组 | 新的合并后的数组 |
| 参数 | start, end | start, deleteCount, items | 一个或多个数组/值 |
| 典型用途 | 复制数组的一部分,分割数组 | 删除元素,插入元素,替换元素 | 合并多个数组 |
使用建议:
- 当你需要复制数组的一部分或整个数组(不改变原数组)时,使用
slice。 - 当你需要修改原数组(删除、替换、添加元素)时,使用
splice。 - 当你需要合并两个或多个数组(不改变原数组)时,使用
concat。
理解这三个方法的区别和用法,是掌握 JavaScript 数组操作的基础,熟练运用它们,可以使你的代码更加简洁、高效和易于维护。
相关文章:
文章已关闭评论!










