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

javascript中的splice vs slice用法

在 JavaScript 中,spliceslice 是两个非常常用但功能截然不同的数组方法。它们的名字很像,容易混淆,但核心区别在于:slice 是用来“截取”的(不修改原数组),而 splice 是用来“剪切/拼接”的(会修改原数组)。
以下是详细的对比和用法说明:

1. 核心区别总结

特性 slice() splice()
主要功能 截取数组的一部分,返回新数组 删除、替换或插入数组元素
是否修改原数组 否 (Immutable) 是 (Mutable)
返回值 包含被截取元素的新数组 包含被删除元素的新数组(如果没有删除则返回空数组)
参数含义 (start, end) - 结束位置不包含 (start, deleteCount, item1, ...)
典型场景 复制数组、获取子数组 删除元素、在中间插入元素、替换元素

2. slice() 用法详解

语法: arr.slice(start, end)
  • start: 开始截取的索引(包含该位置)。如果是负数,表示从末尾倒数。
  • end: 结束截取的索引(不包含该位置)。如果省略,则截取到数组末尾。
特点:
  • 浅拷贝:它返回一个新数组,原数组保持不变。
  • 左闭右开:包含 start,不包含 end
代码示例:
 
const fruits = ['Apple', 'Banana', 'Cherry', 'Date', 'Elderberry'];// 1. 基本用法:获取索引 1 到 3 的元素 (不包含 3)
const sub1 = fruits.slice(1, 3);
console.log(sub1); // ['Banana', 'Cherry']
console.log(fruits); // 原数组不变: ['Apple', 'Banana', 'Cherry', 'Date', 'Elderberry']// 2. 省略 end:从索引 2 一直到末尾
const sub2 = fruits.slice(2);
console.log(sub2); // ['Cherry', 'Date', 'Elderberry']// 3. 使用负数:从倒数第 2 个开始,到末尾
const sub3 = fruits.slice(-2);
console.log(sub3); // ['Date', 'Elderberry']// 4. 复制整个数组 (浅拷贝)
const copy = fruits.slice();

3. splice() 用法详解

语法: arr.splice(start, deleteCount, item1, item2, ...)
  • start: 开始修改的索引。
  • deleteCount: 要删除的元素个数
    • 如果为 0,不删除任何元素(常用于插入)。
    • 如果省略或很大,删除从 start 到末尾的所有元素。
  • item1, item2...: (可选) 要添加到数组中的新元素。
特点:
  • 原地修改:直接改变原数组的结构和长度。
  • 返回值特殊:返回的是被删除的元素组成的数组,而不是操作后的新数组。
代码示例:
let numbers = [10, 20, 30, 40, 50];// 1. 删除元素:从索引 2 开始,删除 2 个元素 (30, 40)
const removed = numbers.splice(2, 2);
console.log(removed); // [30, 40] (被删除的)
console.log(numbers); // [10, 20, 50] (原数组被修改了)// 2. 插入元素:从索引 1 开始,删除 0 个,插入 'A', 'B'
numbers.splice(1, 0, 'A', 'B');
console.log(numbers); // [10, 'A', 'B', 20, 50]// 3. 替换元素:从索引 1 开始,删除 1 个 ('A'),插入 'X'
numbers.splice(1, 1, 'X');
console.log(numbers); // [10, 'X', 'B', 20, 50]// 4. 删除到末尾:从索引 2 开始,删除后面所有
numbers.splice(2); 
console.log(numbers); // [10, 'X']
 
 
 
 
 
 
 
http://www.jsqmd.com/news/436131/

相关文章:

  • 深度学习--卷积神经网络(上) - 教程
  • 智能守护新选择:无源智能锁市场全景与优选厂家指南 - 品牌评测官
  • 2026机器视觉系统厂商实力排名:技术、市场与应用全面盘点 - 华Sir1
  • 知到智慧树视频课件课程下载工具,如何在电脑端下载知到智慧树视频课程课件资料PDF,PPT到本地?
  • 2026年北京即时修护面膜专业选型指南:快速补水/玻尿酸/B5修护/舒缓泛红面膜供应商推荐 - 品牌推荐官
  • 2026年广州问题性肌肤管理品牌优选指南 五大品质品牌企业参考 - 十大品牌榜
  • 2026设备管理系统厂商价值排行榜:十大主流厂商评分与推荐 - 华Sir1
  • 斯百德会展|专业活动策划公司的核心能力,藏在大型学术会议前期策划里 - 麦麦唛
  • 杭州绗亿科技|多平台验货数据实时看,决策快人一步 - 搭贝
  • 2026年 ARO/GRACO涂胶机厂家推荐排行榜:汽车玻璃/新能源电机/锂电涂胶机等精密涂胶设备专业实力解析 - 品牌企业推荐师(官方)
  • powershell 临时全局sockt5 代理
  • 2026年全国电力管哪家好?技术先进产能充足服务有保障 适配各类电力工程 - 深度智识库
  • 2026年广州孕期护理品牌优选指南 十大品质品牌企业参考 - 十大品牌榜
  • 2026年市场可靠的AI搜索企业选哪家,视频矩阵/信息流广告代运营/信息流广告/抖音广告代运营,AI搜索企业推荐排行榜单 - 品牌推荐师
  • 2026年土豆粉机设备选型推荐:天华机械小型/商用土豆粉机原理与报价参考 - 品牌推荐官
  • 2026别错过!千笔ai写作,口碑爆棚的AI论文软件
  • Tita项目集使用小技巧:关联项目统筹管理,进度追踪更高效
  • 2026广州最新母婴护理机构推荐:专业定制服务,守护新生家庭安心时光 - 十大品牌榜
  • 论文阅读“VLA-IN-THE-LOOP: ONLINE POLICY CORRECTION WITH WORLD MODELS FOR ROBUST ROBOTIC GRASPING“
  • 微博热搜榜单实时监控爬虫:从原理到落地,一文掌握热点自动抓取
  • 2026年T-BOX品牌实力排行白皮书:谁在定义车联终端的“硬核标准”? - 华Sir1
  • 学长亲荐 10个AI论文网站:MBA毕业论文写作必备工具测评与推荐
  • 为什么很多APP的动态贴纸会卡顿?问题可能出在美颜SDK
  • 赋能高端制造,解锁表面革新——等离子处理机行业全景与优质品牌解析 - 品牌推荐大师
  • 2026年3月英语录音转文字网站推荐,智能识别与品牌保障口碑之选 - 品牌鉴赏师
  • 研究生收藏!全网爆红的降AIGC网站 —— 千笔·专业降AI率智能体
  • 2026重庆货架厂家TOP5榜单:成渝经济圈仓储设备选型指南 - 深度智识库
  • 采购必看:个人剂量仪/个人剂量报警仪市场主流品牌及头部企业全方位盘点 - 品牌推荐大师1
  • 2026年3月在线视频转文字平台推荐,智能识别与品牌保障口碑之选 - 品牌鉴赏师
  • 真的太省时间!8个降AI率平台测评对比,自考降AI率必备神器