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( )的更多相关文章

  1. javascript数组浅谈2

    上次说了数组元素的增删,的这次说说数组的一些操作方法 join()方法: ,,] arr.join("_") //1_2_3 join方法会返回一个由数组中每个值的字符串形式拼接而 ...

  2. 浅谈Vue响应式(数组变异方法)

    很多初使用Vue的同学会发现,在改变数组的值的时候,值确实是改变了,但是视图却无动于衷,果然是因为数组太高冷了吗? 查看官方文档才发现,不是女神太高冷,而是你没用对方法. 看来想让女神自己动,关键得用 ...

  3. 【javascript】浅谈javaScript的深拷贝

        前言: 最开始意识到深拷贝的重要性是在我使用redux的时候(react + redux), redux的机制要求在reducer中必须返回一个新的对象,而不能对原来的对象做改动,事实上,当时 ...

  4. 【微信小程序项目实践总结】30分钟从陌生到熟悉 web app 、native app、hybrid app比较 30分钟ES6从陌生到熟悉 【原创】浅谈内存泄露 HTML5 五子棋 - JS/Canvas 游戏 meta 详解,html5 meta 标签日常设置 C#中回滚TransactionScope的使用方法和原理

    [微信小程序项目实践总结]30分钟从陌生到熟悉 前言 我们之前对小程序做了基本学习: 1. 微信小程序开发07-列表页面怎么做 2. 微信小程序开发06-一个业务页面的完成 3. 微信小程序开发05- ...

  5. 视频基础知识:浅谈视频会议中H.264编码标准的技术发展

    浅谈视频会议中H.264编码标准的技术发展 浅谈视频会议中H.264编码标准的技术发展 数字视频技术广泛应用于通信.计算机.广播电视等领域,带来了会议电视.可视电话及数字电视.媒体存储等一系列应用,促 ...

  6. 20190608_浅谈go&java差异(三)

    20190608_浅谈go&java差异(三) 转载请注明出处https://www.cnblogs.com/funnyzpc/p/10990703.html 第三节内容概览 多线程通讯(线程 ...

  7. 浅谈 Fragment 生命周期

    版权声明:本文为博主原创文章,未经博主允许不得转载. 微博:厉圣杰 源码:AndroidDemo/Fragment 文中如有纰漏,欢迎大家留言指出. Fragment 是在 Android 3.0 中 ...

  8. 浅谈 LayoutInflater

    浅谈 LayoutInflater 版权声明:本文为博主原创文章,未经博主允许不得转载. 微博:厉圣杰 源码:AndroidDemo/View 文中如有纰漏,欢迎大家留言指出. 在 Android 的 ...

  9. 浅谈Java的throw与throws

    转载:http://blog.csdn.net/luoweifu/article/details/10721543 我进行了一些加工,不是本人原创但比原博主要更完善~ 浅谈Java异常 以前虽然知道一 ...

  10. 浅谈SQL注入风险 - 一个Login拿下Server

    前两天,带着学生们学习了简单的ASP.NET MVC,通过ADO.NET方式连接数据库,实现增删改查. 可能有一部分学生提前预习过,在我写登录SQL的时候,他们鄙视我说:“老师你这SQL有注入,随便都 ...

随机推荐

  1. git如何使用?初始化仓库 提交代码

    首先 国内一般使用码云 注册码云 在ui界面创建仓库 一般只有一个readme 方法一: 第一步  git clone https://gitee.com/用户个性地址/HelloGitee.git ...

  2. 免费领取Python学习资料

    话不多说,直接上Python学习资料 QQ·群: 894692354(不单独一一发了,要的人太多,实在忙不过来)

  3. Python批量改文件名

    对以下路径中的文件名批量修改. 一.读取指定路径中的文件名 #导入标准库 import os #读取文件名 filesDir = "路径--" fileNameList = os. ...

  4. jmeter-jsr223取样器的使用

    相比于BeanShell 取样器,JSR223取样器具有可大大提高性能的功能(编译)如果需要,一定要使用JSR223取样器编写脚本是更好的选择!!! 属性描述名称:显示的此取样器的描述性名称,可自定义 ...

  5. 使用 VS 2019 将 c# 生成 DLL 动态链接库文件

    主要步骤: ChatGPT 的回答: 你可以尝试使用 Visual Studio 创建一个类库项目,然后将你写的两个类添加到该项目中,并进行编译,最终生成 DLL 文件.具体步骤如下: 打开 Visu ...

  6. 有一个正整数N可以分解成若干个正整数之和,问如何分解能使这些数的乘积最大?

    这可真是个有意思的问题,之前好像在刷题的时候也碰到过类似的问题 问题的解决是:我们由均值不等式可以知道,当每个数相等的时候,有乘积最大. 那么所以实际上就是将这个数均分,假如正整数N为 k,假设分成n ...

  7. 华企盾DSC邮件白名单问题常见处理方法

    1.先检查邮件白名单服务器配置测试连接的通(不通可能是协议未开或者账号密码错误) 2.检查邮件发送端口是否配置(常见的有25和s465.s587) 3.邮件是否到发件箱或者收件箱的垃圾邮件里面了 4. ...

  8. APP性能测试-客户端性能测试

    https://blog.csdn.net/xiaomaoxiao336368/article/details/83547318

  9. ncurses 与 panel

    ncurses 与 panel 一下是ncurses使用面板库panel的一个demo程序. #include <ncurses.h> #include <panel.h> # ...

  10. c#中用System.Diagnostics.Process.Start(Path.GetFullPath(“vlc.exe.lnk“), url);用vlc的快捷方式打开http的url不起作用?

    vlc.exe.lnk双击这个文件,能正常打开vlc,但是用System.Diagnostics.Process.Start(Path.GetFullPath("vlc.exe.lnk&qu ...