首页 > 其他分享 >slice 和 splice 的区别

slice 和 splice 的区别

时间:2024-09-14 17:22:37浏览次数:11  
标签:arr slice splice 区别 元素 修改 数组

slicesplice 是 JavaScript 中用于操作数组的两个方法,但它们在功能和行为上有显著的区别。让我们分别来看它们的定义和区别。

1. slice()

  • 定义slice() 方法用于返回数组的一部分,不修改原数组。
  • 参数slice(start, end),返回从索引 start 到索引 end(不包括 end)的数组元素。
  • 返回值:一个新数组,包含所选的部分。
特点:
  • 不修改原数组
  • 返回新数组,原数组保持不变。
例子:
let arr = [1, 2, 3, 4, 5];
let newArr = arr.slice(1, 3); // 从索引 1 到 3(不包括 3)
console.log(newArr); // [2, 3]
console.log(arr);    // [1, 2, 3, 4, 5] 原数组没有被修改

2. splice()

  • 定义splice() 方法用于修改原数组,可以通过删除、替换或添加元素来改变原数组。
  • 参数splice(start, deleteCount, item1, item2, ...)
    • start:从哪个索引开始修改。
    • deleteCount:要删除的元素数量。
    • item1, item2, ...:可选,表示插入的元素。
  • 返回值:包含被删除元素的数组,如果没有删除元素则返回空数组。
特点:
  • 修改原数组
  • 可以删除插入替换数组中的元素。
例子:
let arr = [1, 2, 3, 4, 5];
let removed = arr.splice(1, 2); // 从索引 1 开始,删除 2 个元素
console.log(removed); // [2, 3] 被删除的元素
console.log(arr);     // [1, 4, 5] 原数组被修改

你也可以使用 splice() 来插入新元素:

let arr = [1, 4, 5];
arr.splice(1, 0, 2, 3); // 从索引 1 开始,不删除任何元素,插入 2 和 3
console.log(arr); // [1, 2, 3, 4, 5] 原数组被修改

3. 总结 slice() vs splice()

特性slice()splice()
用途返回数组的一个子数组修改原数组,通过删除、替换或插入元素
返回值新的子数组,不修改原数组被删除的元素,原数组被修改
参数slice(start, end)splice(start, deleteCount, item1, item2, ...)
对原数组的影响不修改原数组修改原数组

总结:

  • slice():用于提取数组的一部分,不会修改原数组,返回一个新数组。
  • splice():用于在原数组中删除、添加或替换元素,会修改原数组

选择使用哪一个方法取决于你是要修改数组本身,还是只需要一个数组的子集。

标签:arr,slice,splice,区别,元素,修改,数组
From: https://blog.csdn.net/DOVISK/article/details/142263166

相关文章

  • java-----instanceof与getClass的区别
    java-----instanceof与getClass的区别在比较一个类是否和另一个类属于同一个类实例的时候,我们通常可以采用instanceof和getClass两种方法通过两者是否相等来判断,但是两者在判断上面是有差别的,下面从代码中看看区别:publicclassTest{ publicstaticvoidtestInstanceof(Obj......
  • 云服务器和物理服务器的区别在哪
    在当今数字化的时代,服务器在企业和个人的信息技术架构中扮演着至关重要的角色。其中,云服务器和物理服务器是两种主要的服务器类型,它们在多个方面存在着明显的区别。一、硬件方面物理服务器是实实在在的物理硬件设备,它由机箱、主板、CPU、内存、硬盘等组件构成。用户拥有对物理服......
  • commit@push 与 commit@sysc 有什么区别和联系
    commit@push和commit@sync是Git操作中的两种不同命令组合或工作流,虽然两者都涉及commit操作,但它们的目标和执行操作有些不同。下面解释它们的区别和联系:1.commit@push含义:指的是先进行gitcommit提交,然后使用gitpush将本地的提交推送到远程仓库。流程:commit......
  • 直流电阻和交流电阻区别详解
    直流电阻和交流电阻在电学领域中是两个重要的概念,它们之间存在多个方面的区别。以下是对两者区别的详细阐述:一、直流电阻和交流电阻的定义与特性直流电阻:是指在直流电路中对电流的阻碍作用,表现为元件通上直流电时所呈现的电阻,即元件固有的静态电阻。直流电阻的大小可以通过欧姆......
  • 直流电阻和交流电阻区别详解
    直流电阻和交流电阻在电学领域中是两个重要的概念,它们之间存在多个方面的区别。以下是对两者区别的详细阐述:一、直流电阻和交流电阻的定义与特性直流电阻:是指在直流电路中对电流的阻碍作用,表现为元件通上直流电时所呈现的电阻,即元件固有的静态电阻。直流电阻的大小可以通过欧姆定律......
  • Spring和Spring Boot之间的区别
    Spring和SpringBoot是Java开发中常用的框架,它们之间有许多联系,但也存在显著的区别。Spring是一个全面的Java应用开发框架,而SpringBoot是基于Spring的快速开发工具,用于简化Spring应用的配置和部署。以下是它们的主要区别:1.框架定义Spring:是一个完整的、功能强......
  • carplay和carlife的三种区别
    CarPlay和CarLife作为车载互联系统,近年来在汽车行业中得到了广泛的应用。它们不仅为驾驶者提供了更加便捷、智能的驾驶体验,还推动了车联网技术的发展。然而,这两者之间也存在明显的区别,本文将从三个方面探讨CarPlay和CarLife的不同之处。首先,从支持的系统来看,CarPlay是苹果公司推出......
  • java中的Map系列的集合HashMap、HashTable、TreeMap以及Collections和Collection的区
    1.Map的特性特性:key键-value值身份证号--->人可以通过key获取到valueMap它的key是唯一的,Map中的key是无序的而且是不重复的value是可以重复的。Map集合的基本方法:Vput(Kkey,Vvalue)添加元素如果put的key存在那么会用新的value的值替换掉原有的value值key......
  • 【转】WAF和防火墙的区别
    原文地址:https://www.zonghengcloud.com/article/15381.htmlWAF和防火墙的区别Web应用防火墙(WAF)和传统防火墙是两种网络安全工具,它们在防护范围、功能和工作方式等方面存在显著区别。了解这两者的差异,有助于企业和开发者选择合适的安全方案,保护其网络和应用免受各种攻击。1.......
  • HTTP的强制缓存和协商缓存有什么区别和联系?
    你好,我是沐爸,欢迎点赞、收藏、评论和关注。强制缓存和协商缓存是HTTP缓存机制中的两种主要类型,它们在实现方式、工作原理和应用场景上存在显著差异。以下是两者之间的主要区别:一、定义与实现方式强制缓存:定义:强制缓存是一种强制地从本地缓存中读取数据,而不去请求服......