当前位置: 首页 > backend >正文

JS Array 方法 | 区分 slice 和 splice

省流总结:

slice(起, 终),切片 ,复制返回新数组不改原数组

splice(起, 删几个, 插入哪几个)增删改 原数组,返回被改后的原数组。


🟢 一、 slice()不改变原数组 ,返回“切片”

✅ 功能:

从原数组中提取部分元素,返回一个新数组,原数组不变

✅ 语法:

array.slice(start, end)

  • start:起始索引(包含)

  • end:结束索引(不包含)

例子:

const arr = [10, 20, 30, 40, 50];
const newArr = arr.slice(1, 4);
console.log(newArr); // [20, 30, 40]
console.log(arr);    // 原数组不变 [10, 20, 30, 40, 50]

✅ 特点:

  • 适合“复制数组”:const copy = arr.slice();

  • 不破坏原数组,返回值是新的数组


🔴 二、splice()直接修改原数组

✅ 功能:

  • 删除元素

  • 插入元素

  • 替换元素

✅ 语法: array.splice(起始索引, 删除数量, 插入的新元素)

array.splice(start, deleteCount, item1, item2, ...) 
  • start:开始修改的位置索引

  • deleteCount:要删除的元素数量

  • item1...:要插入的新元素(可选)


✅ 删除元素示例:

const arr = [1, 2, 3, 4, 5]; 
arr.splice(2, 2); // 从索引 2 开始删除 2 个元素 
console.log(arr); // [1, 2, 5] 

✅ 插入元素示例:

const arr = [1, 2, 5]; 
arr.splice(2, 0, 3, 4); // 在索引 2 位置插入 3 和 4 
console.log(arr); // [1, 2, 3, 4, 5] 

✅ 替换元素示例:

const arr = [1, 2, 3]; 
arr.splice(1, 1, 'a', 'b'); // 把索引1的 1 个元素换成 'a' 和 'b' 
console.log(arr); // [1, 'a', 'b', 3] 

✅ 特点:

  • 原地修改原数组;

  • 返回值是被删除的元素组成的新数组


✅ slice vs splice 对比表:

特性slice()splice()
原数组是否改变❌ 否(不改变) 是(原地修改
返回值提取的新数组被删除的元素数组
用于拷贝、截取删除、插入、替换
是否支持插入❌ 不支持✅ 支持

🧪 常用通用写法总结:

✔️ 拷贝数组:

const newArr = arr.slice(); 

✔️ 提取最后三个元素:

const last3 = arr.slice(-3); 

✔️ 清空数组(splice):

arr.splice(0, arr.length); // 原数组变为空 

✔️ 插入新元素到中间:

arr.splice(2, 0, '新元素');
http://www.xdnf.cn/news/1782.html

相关文章:

  • `rfind()` 从字符串的右侧开始查找指定子字符串首次出现的位置
  • SiamFC算法深度解析
  • 深入浅出:Pinctrl与GPIO子系统详解
  • SpringCloud微服务架构设计与实践 - 面试实战
  • C语言别踩白块附源码
  • Trae+DeepSeek学习Python开发MVC框架程序笔记(四):使用sqlite存储查询并验证用户名和密码
  • 现代化个人博客系统 ModStartBlog v10.3.0 博客批量操作,博客评论智能审核,安全升级
  • 某大型电解铝厂电解系统谐波治理装置改造沃伦森电气
  • Linux之七大难命令(The Seven Difficult Commands of Linux)
  • U盘能识别但无法写入数据的原因
  • CSS学习笔记8——表格
  • STM32F103C8T6 GPIO 通讯原理与物理层解析
  • Git 详细使用说明文档(适合小白)
  • 数据结构-冒泡排序(Python)
  • 【硬核干货】JetBrains AI Assistant 干货笔记
  • 数据分析工具 - AxureMost
  • php 框架Workerman定时任务详解《一》
  • MCP开发实战(一)基于MCP协议的大模型网关——多个大模型API统一封装为标准化工具
  • Axure大屏可视化模板:多领域数据决策的新引擎
  • TXPOLARITY/RXPOLARITY设置
  • java延迟map, 自定义延迟map, 过期清理map,map能力扩展。如何设置map数据过期,改造map适配数据过期
  • day6-小白学习JAVA---方法_面向对象
  • 了解低功耗蓝牙中的安全密钥
  • 缓存穿透、雪崩、击穿深度解析与解决方案
  • 多线程中的ABA问题详解
  • Java并发编程|CompletableFuture原理与实战:从链式操作到异步编排
  • BGE(BAAI General Embedding)模型详解
  • Nginx 安装与配置全流程指南(2025 最新版)
  • 桌面应用中VUE使用新浏览器窗口打开页面
  • Parasol 将交易卡牌游戏体验带入 Sui