浅谈splice( )与slice( )
1、splice( )
概念:splice( )用于修改原始数组,它可以删除、插入、替换数组的元素,并返回被删除的元素组成的新数组。
语法:splice(start,deleteCount,item1,item2,itemN)
start:开始位置,规定添加/删除的起始位置。从 0 开始计算的索引,表示要开始改变数组的位置
deleteCount:移除的数量。要删除的项目数量。如果设置为 0,则不会删除项目。
item:替换的元素,从数组中移除一个或多个,并用新的item替换。
let arr = [1, 3, 4, 5, 7, 8, 9, 6];
// 从下标为2的元素开始截取,截取3个元素
let result = arr.splice(2, 3);
// 输出结果:[4, 5, 7]
console.log(result);
// 从下标为-3的元素开始截取,截取2个元素
let result1 = arr.splice(-3, 2);
// 输出结果为:[8, 9]
console.log(result1);
2、slice( )
概念:slice( )用于创建原始数组的一个浅拷贝副本,它可以通过指定起始和结束位置来选取数组的一部分,并返回选取的元素组成的新数组。
语法:slice(start,end)
start:提取起始处的索引,规定从何处开始选取,默认是从下标0开始。如果是负数,则从末尾开始。也就是说 -1 指最后一个元素,-2 指倒数第二个元素,以此类推。
end:提取终止处的索引,规定从何处结束选取。该参数是数组片段结束处的数组下标,如果省略则一直截取到数组末尾。
let arr = [1, 2, 3, 5, 2, 3, 4, 4, 1, 2];
// 从下标为1的元素开始截取,结束下标为4的元素
let result = arr.slice(1, 4);
// 输出结果为:[2, 3, 5]
console.log(result);
// 从下标为-3的元素开始截取,结束下标为-1的元素
let result1 = arr.slice(-3, -1);
// 输出的结果为:[4,1]
console.log(result1);
注意:返回一个新的数组,包含从 start 到 end (不包括该元素)的 arrayObject 中的元素。
3、区别
相同点:都可以用于数组元素的截取
不同点:
① splice改变原数组,slice不改变原数组;
② splice还可以实现添加、删除操作;
③ splice可以传入3个参数,而slice只能传入2个参数。
浅谈splice( )与slice( )的更多相关文章
- javascript数组浅谈2
上次说了数组元素的增删,的这次说说数组的一些操作方法 join()方法: ,,] arr.join("_") //1_2_3 join方法会返回一个由数组中每个值的字符串形式拼接而 ...
- 浅谈Vue响应式(数组变异方法)
很多初使用Vue的同学会发现,在改变数组的值的时候,值确实是改变了,但是视图却无动于衷,果然是因为数组太高冷了吗? 查看官方文档才发现,不是女神太高冷,而是你没用对方法. 看来想让女神自己动,关键得用 ...
- 【javascript】浅谈javaScript的深拷贝
前言: 最开始意识到深拷贝的重要性是在我使用redux的时候(react + redux), redux的机制要求在reducer中必须返回一个新的对象,而不能对原来的对象做改动,事实上,当时 ...
- 【微信小程序项目实践总结】30分钟从陌生到熟悉 web app 、native app、hybrid app比较 30分钟ES6从陌生到熟悉 【原创】浅谈内存泄露 HTML5 五子棋 - JS/Canvas 游戏 meta 详解,html5 meta 标签日常设置 C#中回滚TransactionScope的使用方法和原理
[微信小程序项目实践总结]30分钟从陌生到熟悉 前言 我们之前对小程序做了基本学习: 1. 微信小程序开发07-列表页面怎么做 2. 微信小程序开发06-一个业务页面的完成 3. 微信小程序开发05- ...
- 视频基础知识:浅谈视频会议中H.264编码标准的技术发展
浅谈视频会议中H.264编码标准的技术发展 浅谈视频会议中H.264编码标准的技术发展 数字视频技术广泛应用于通信.计算机.广播电视等领域,带来了会议电视.可视电话及数字电视.媒体存储等一系列应用,促 ...
- 20190608_浅谈go&java差异(三)
20190608_浅谈go&java差异(三) 转载请注明出处https://www.cnblogs.com/funnyzpc/p/10990703.html 第三节内容概览 多线程通讯(线程 ...
- 浅谈 Fragment 生命周期
版权声明:本文为博主原创文章,未经博主允许不得转载. 微博:厉圣杰 源码:AndroidDemo/Fragment 文中如有纰漏,欢迎大家留言指出. Fragment 是在 Android 3.0 中 ...
- 浅谈 LayoutInflater
浅谈 LayoutInflater 版权声明:本文为博主原创文章,未经博主允许不得转载. 微博:厉圣杰 源码:AndroidDemo/View 文中如有纰漏,欢迎大家留言指出. 在 Android 的 ...
- 浅谈Java的throw与throws
转载:http://blog.csdn.net/luoweifu/article/details/10721543 我进行了一些加工,不是本人原创但比原博主要更完善~ 浅谈Java异常 以前虽然知道一 ...
- 浅谈SQL注入风险 - 一个Login拿下Server
前两天,带着学生们学习了简单的ASP.NET MVC,通过ADO.NET方式连接数据库,实现增删改查. 可能有一部分学生提前预习过,在我写登录SQL的时候,他们鄙视我说:“老师你这SQL有注入,随便都 ...
随机推荐
- CSP-S 考前备战——常考知识点串烧
1.树形结构 与 树形dp PS :在CSP-S 2019,CSP-J 2020,CSP-S 2020,CSP-S 2021 均有考查 此类问题的做题方法就是将问题转化成树上的问题,然后进行深度优先遍 ...
- Meissel–Lehmer 算法
前言 推荐先行阅读我的blog文章----Min_25 筛 什么是Meissel–Lehmer 算法 Meissel-Lehmer 算法是一种基于 \(ϕ\) 函数的的快速计算前缀质数个数(当然也可以 ...
- Ubuntu 20.04 开启局域网唤醒(WoL)
打开主板相关设置 创建 systemd 自启动设置文件 vim /etc/systemd/system/wol@.service 放入以下内容: [Unit] Description=Wake-on- ...
- .net core下优秀的日志框架使用解析,附源代码
在 .NET Core 中,日志是一个非常重要的组件,它可以帮助我们记录应用程序的运行情况,以便在出现问题时进行排查.在本文中,我们将介绍五个优秀的 .NET Core 日志框架,它们分别是 Seri ...
- [NewStarCTF WEEK5] pwn-planet 详解
这道题目更多是考pwner的逆向功底(虽然程序逻辑也不是非常复杂=_=) 老规矩,先checksec查看程序 保护全开 看一下main函数 __int64 __fastcall main(int a1 ...
- 使用Visual Studio 2022 创建lib和dll并使用
对于一个经常写javaWeb的人来说,使用Visual Studio似乎没什么必要,但是对于使用ffi的人来说,使用c或c++编译器,似乎是必不可少的,下面我将讲述如何用Visual Studio 2 ...
- 28、错误error
1.是什么? 在实际的项目中,我们希望通过程序的错误信息快速定位问题,但是又不喜欢错误处理:代码就会很冗余又啰嗦.Go语言没有提供类似Java.C#语言中的try...catch异常处理方法,而是通过 ...
- TCP/IP协议---三次握手和四次挥手
TCP首部的数据格式 其中, 源端口号和目的端口号各占16位,端口范围1~65535.1024以下为知名端口,1024~65535是供用户使用.源端口,目的端口,源ip,目的ip这四个值唯一确定一个T ...
- U盘加密技术有哪些先进的保护措施?
华企盾DSC数据防泄密系统的U盘加密技术采用了一系列先进的保护措施,以确保高水平的数据安全.系统采用强大的加密算法,如AES256(高级加密标准),确保对U盘中的数据进行不可逆的强加密,防范了未经授权 ...
- 三维GIS渲染引擎盘点,以Cesium为核心的拓展优化
目前,以Cesium为核心的各类产品繁多,本文将挑选一些以Cesium为核心的软件案例,为大家进行介绍. 1. CesiumJS CesiumJS相信凡是GIS行业相关人员都特别熟悉了,CesiumJ ...