返回

array slice splice:JavaScript 数组操作利器,slice、splice 与 concat 的区别与用法

来源:网络   作者:   日期:2025-10-13 09:52:02  

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

slice 方法:提取子数组 (不修改原数组)

array slice splice:JavaScript 数组操作利器,slice、splice 与 concat 的区别与用法

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 方法:修改数组 (删除/替换/添加元素)

array slice splice:JavaScript 数组操作利器,slice、splice 与 concat 的区别与用法

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 方法:合并数组 (不修改原数组)

array slice splice:JavaScript 数组操作利器,slice、splice 与 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]

总结对比:

特性slicespliceconcat
主要功能提取子数组修改/删除/添加/替换数组元素合并数组
修改原数组
返回值被提取的子数组被删除的元素组成的数组新的合并后的数组
参数start, endstart, deleteCount, items一个或多个数组/值
典型用途复制数组的一部分,分割数组删除元素,插入元素,替换元素合并多个数组

使用建议:

  • 当你需要复制数组的一部分或整个数组(不改变原数组)时,使用 slice
  • 当你需要修改原数组(删除、替换、添加元素)时,使用 splice
  • 当你需要合并两个或多个数组(不改变原数组)时,使用 concat

理解这三个方法的区别和用法,是掌握 JavaScript 数组操作的基础,熟练运用它们,可以使你的代码更加简洁、高效和易于维护。

分类:编程
标签:
责任编辑:今题网
版权声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。

相关文章:

文章已关闭评论!