JavaScript数组中的slice()和aplice()方法的区别

QT触摸屏开发:如何通过重写事件处理实现精准按键长按检测 本文针对QT触摸屏开发中按键长按检测不精准的常见问题,深入剖析了传统信号机制失效的原因,并提供了通过重写事件处理函数(event)的解决方案。文章详细介绍了创建自定义TouchButton类、直接处理QTouchEvent以实现可靠长按检测的完整步骤与代码示例,并分享了进阶优化与避坑指南,帮助开发者实现跨平台一致的精准交互。 阅读详情

背景

由于在面试的时候在这个问题上吃了亏,当时的那个尴尬呀,自己明知道是很基础的知识,但是由于平时用的比较少,居然没有回答上来,特此在这里做一个记录,记住当时那个面试尴尬的教训!

区别

Array.slice()

Array.slice()方法返回指定数组的一个片段或者子数组。它的两个参数分别指定了片段的开始和结束的位置。返回的数组包含第一个参数指定的位置和所有到但不包含第二个参数指定的位置之间的所有数组元素,如下所示:

var a=[1,2,3,4,5,6,7];
a.slice(0,1)  //返回[1]
a.slice(0,3)  //返回[1,2,3]

脚下留心

1、如果只指定一个参数,则返回的数组将包含从开始位置到数组结尾的所有元素。如下所示:

 

a.slice(2)  //返回[3,4,5,6,7]

2、如果参数中出现了负数,它表示相对于数组最后一个元素的位置,例如,参数-1指定了最后一个元素,而-3指定了数组第三个元素,如下所示:

a.slice(-3,-1)  //返回[5,6]

3、如果不给参数,则返回的数组包含所有元素,如下所示:

a.slice()   //返回[1,2,3,4,5,6,7]

但是此处需要注意一个问题:a.slice()方法虽然返回了一个新的数组,但是不能贸然的使用该方法用作数组的拷贝。看如下代码:

var c=[{c1:1},[1,2,3]];  //定义一个元素为引用类型的数组
var b=c.slice()          //b=[{c1:1},[1,2,3]]
b[0].c1=99;              //改变b数组内部引用类型的值
b[1][0]=99;              //改变b数组内部引用类型的值
console.log(c)           //c=[{c1:99},[99,2,3]]

可以看到如果数组元素为引用类型,并没有实现深拷贝的作用,与这个方法具有同样坑的数组方法还有map()方法,如下所示:

var b=c.map(function(i){return i;})  //返回新数组,但是不能用作数组深拷贝

特别注意!

slice()方法不会修改调用的数组。如下所示:

a.slice(0,1)    //返回[1]
console.log(a)  //[1,2,3,4,5,6,7]

Array.splice()

Array.splice()方法是在数组中插入或删除元素的通用方法。不同于slice()方法,splice会修改调用的数组。

该方法可以完成三种数组的操作,分别是:

1、从数组中删除元素

2、插入元素到数组中

3、同时完成以上两种操作

splice()的第一个参数指定了插入和(或)删除的起始位置。第二个参数指定了应该从数组中删除元素的个数。如果省略第二个参数,则从起始点开始到数组结尾的所有元素都将被删除。例如:

var a=[1,2,3,4,5,6,7];
a.splice(0,2);              //返回[1,2],a=[3,4,5,6,7]
a.splice(0);                //返回[3,4,5,6,7],a=[]

splice()的前两个参数指定了需要删除的数组元素,更多紧随其后的任意个数的参数指定了需要插入到数组里面的参数,从第一个参数的指定位置开始插入。例如:

var a=[1,2,3,4,5,6,7];
a.splice(2,0,"a","b",[1,2,3])   //返回[] a=[1,2,"a","b",[1,2,3],3,4,5,6,7]
a.splice(2,2,"a","b",[1,2,3])   //返回["a","b"] a=[1,2,"a","b",[1,2,3],[1,2,3],3,4,5,6,7]

脚下留心

如果不传参数呢?不传参数不会改变调用的数组,返回[],例如:

a.splice()    //返回[] a=[1,2,"a","b",[1,2,3],[1,2,3],3,4,5,6,7]

特别注意!

splice()方法会修改调用的数组。

开源PACS系统Orthanc(DICOM服务器)配置 PACS(Picture Archiving and Communication System)是医学影像的数字化存储、检索和传输系统,用于管理和存储医学图像和相关信息,如放射学、核医学、超声、病理学等各种医学影像。PACS系统通过数字化技术取代了传统的胶片方式,使医疗机构能够更高效地存储、传输和查看医学图像,从而提高了医疗图像的管理和工作流程。 阅读详情

相关推荐

避坑指南:时间序列互相关分析(CCF)常见的5个误用场景

本文详细解析了时间序列互相关分析(CCF)中常见的5个误用场景,包括忽视平稳性检验、混淆同期相关与因果关联、误读滞后阶数、忽略自相关干扰以及样本量不足等问题。通过实际案例和技术建议,帮助数据分析师避免这些陷阱,确保CCF分析的准确性和可靠性。

weixin_29064009的博客 428

JS常用内置方法1——slice()和splice()的区别

JS常用内置方法1——slice()和splice()的区别   以前还是纯小白的时候,总会搞混JS数组的 slice() 和splice() 方法。因为这2个方法名字太像了,就差一个字母,语法也有类似之处。   现在久了没用,有时候也会忘记,所以做一个总结来区分一下。   slice()     slice()定义:从已有的数组中返回你选择的某段数组元素      slice()语法:arrayObject.slice(start,end)       注:       ①...

zhoumeina99的博客 446

告别QXDM:在Android Studio中调试与验证高通NV读写功能的完整流程

本文详细介绍了在Android Studio中调试与验证高通NV分区读写功能的完整流程,替代传统的QXDM工具。通过JNI接口层、HAL服务层和Diag通信层的架构设计,开发者可以在熟悉的IDE环境中高效完成NV操作,包括环境配置、错误处理和性能优化等关键实践。

weixin_27013291的博客 261

JS中 slice()和splice()区别

1.slice() 方法返回选定的元素,即一个新的数组,原数组并未发生改变 参数(2个) : a : 必需。从第几个开始选取。如果是负数,从尾部开始算起的位置。如 -1 指最后一个元素... b :可选。从第几个开始选取。该参数是数组片断结束处的数组下标。如果没有指定该参数,则是数组的长度。如果是负数,从尾部开始算起的位置。如 -1 指最后一个元素... let arr = new ...

haozi的博客 463

UA MATH567 高维统计I 概率不等式1 Hoeffding不等式与Chernoff不等式

UA MATH567 高维统计I 概率不等式1 Hoeffding不等式与Chernoff不等式 这个系列介绍高维统计,一些需要知道的结论可以参考UA MATH 564与566两个系列,分为两大部分,高维的概率论相关结果、高维的统计模型。概率论相关结论分六个部分介绍:概率不等式、高维随机向量、随机矩阵、Concentration without Independence、二次型、随机过程。 ...

一个不愿透露姓名的博客 2733

Linux文件操作四剑客

① /^(d{2}|d{4})-((0([1-9]{1}))|(1[1|2]))-(([0-2]([1-9]{1}))|(3[0|1]))$/ // 年-月-日 yyyy-MM-dd / yy-MM-dd 格式。⑥“^(([0-9]+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*))$” //正浮点数。

wuds_158的博客 1611

JavaScript学习--splice()函数详解

splice()函数详解 splice() 方法向/从数组中添加/删除项目,然后返回被删除的项目。 注释:该方法会改变原始数组。 参数: index —— 必需。整数,规定添加/删除项目的位置,使用负数可从数组结尾处规定位置。 howmany —— 必需。要删除的项目数量。如果设置为 0,则不会删除项目。 item1, …, itemX —— 可选。向数组添加的新项目。 返回值 Array —— 包含被删除项目的新数组,如果有的话。 一、情况一 示例:pandas 是基于NumPy 的

xian的博客 17万+

基于 SpringAI 整合 DeepSeek 模型实现 AI 聊天对话

很多云平台都提供了一键部署大模型的功能,这里不再赘述(阿里云百炼平台、火山方舟-火山引擎等)Ollama。

📜一个热爱探索的人 1279

splice的用法总结

splice

m0_60237095的博客 2294

SAP采购订单中项目类别B(限制)的控制逻辑

在笔者所在企业中,框架类采购订单中项目类别需要选择B(限制)。今天笔者从比较全面的角度分析了一下这个项目类别B到底可以决定些什么?控制到什么?先从后台SPRO中打开相应的配置菜单。 打开项目类别B之后,可以看到一些配置信息,这里有一点与其它配置不同的地方,即无法新增项目,也无法修改现有项目。这个疑惑今后再去解决吧。当前只研究项目类别B的控制逻辑。 下面就参考上图中的配置分段来分析和测试其控制逻辑, 1、如项目类别配置图,所需材料值为不允许;经测试,如下图在采购订单创建时,不能输入物料编号条目。

专注SAP应用技术文章写作,致力于拉近用户与系统间的距离; 6032

UE4_SpeedTree Shader源码分析

目录 1.UMaterialExpressionSpeedTree::Compile 2.Compiler->SpeedTree 3.GetSpeedTreeVertexOffset 4.Scene中的SpeedTree应用 (Scene->UpdateSpeedTreeWind) 5.GetSpeedTreeVertexOffsetInner 由于之后做风场,也需要在S...

zzgyy123的专栏 2631

JavaScript slice() 方法

用slice方法返回数组一部分的Javascript示例"text/javascript">var a;a = new Array("a","b","c","d","e");document.write(a.slice(0,3) + "");document.write(a.slice(-3,4) + "");document.write(a.sli

1274

【LAMMPS学习】五、LAMMPS命令(8) Pair_style 势

所有LAMMPS pair_style命令如下表所示。有些样式有加速版本。这由括号中的附加字母表示:g = GPU, i = INTEL, k = KOKKOS, o = OPENMP, t = OPT。

荷塘阅色 3016

array.some()与array.each()区别&&array.slice()与array.aplice()区别

slice()方法和splice()方法都是原生js中对数组操作的方法 定义和用法: some() 方法用于检测数组中的元素是否满足指定条件(函数提供)。 some() 方法会依次执行数组的每个元素: 如果有一个元素满足条件,则表达式返回true , 剩余的元素不会再执行检测。 如果没有满足条件的元素,则返回false。 注意: some() 不会对空数组进行检测。 注意: some() 不会改变...

norma_jiang的博客 1040

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

slice()方法 和splice 方法的区别

定义 splice() 方法用于插入、删除或替换数组的元素。 slice() 方法 可提取字符串的某个部分,并以新的字符串返回被提取的部分。 更多的可查看:http://www.cnblogs.com/web-ed2/archive/2011/07/20/2111678.html 不搬砖了 --------------------- splice 会更改原始数据, s...

weixin_30247159的博客 228

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

js操作数组的常用方法(splice)

1、删除数组指定的一个元素 a.splice(n, 1); // n是要删除的对象的下标 1表示只删除一个 删除指定的多个 a.splice(n,m) // n是要删除的对象的下标 m表示从下标为n的开始,连续删除m个(m大于a.length也无妨) 2、在指定位置添加元素 3、替换 ...

qq_42243957的博客 643

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

js中splice和slice方法的用法和区别

1. splice 定义 splice方法向数组中添加项目或删除项目,并返回删除的项目 splice方法会改变原始数组。 语法 array.splice(index, howmany, item1,...itemx) 1. index 必须。整数,指定在什么位置添加/删除项目,使用负值指定从数组末尾开始的位置。 2. 可选,要删除的项目数。若设置为0,则不会删除任何项目。 3. item1,...,itemx 可选,要添加到数组中的新项目。 返回值: 新数组,包含删除的项目 (如果有)。 实

Alan_seeker的博客 2万+

splice()函数用法总结

对数组进行删除以及添加元素的操作

m0_57005111的博客 1万+

slice、splice、split 三者的使用

从 start下标 开始,保留到 end下标 的前一个结束,如果没有 end,就保留到最后一个字符结。substr与substring。它们都能截取字符串,并且返回一个新的字符串(不改变原字符串)。str.substr(start,num):截取字符串,从 start下标 开始,截取 num 个字符串。str.substring(start,end):截取字符串,从 start下标 开始,保留到 end下标 的前一个结束,如果没有 end,就保留到最后一个字符结束,跟 slice方法 一样。

weixin_45776545的博客 1065

数组splice()方法

Array.splice()方法是在数组中插入或删除元素的通用方法。不同于slice()和concat(),splice()会修改调用的元素数组。 var a = [1,2,3,4,5,6,7,8]; a.splice(4);//【5,6,7,8】;a是[1,2,3,4] a.splice(2,3);//[3,4];a是[1,2]

qq_36434014的博客 1600

js数组

js数组 数组的创建 1字面量创建 数组元素之间用逗号隔开 2 构造函数创建 数组的遍历 1显示单个数组的元素 显示单个数组元素的方式为 数组名[下标] 注意: 数组下标从0开始 2数组元素遍历 数组名.length的返回值为当前数组名的数组长度也就是数组元素的个数 注意数组的下标是从0开始,但数组的长度是从1开始计算的 ,所以如果你想找到...

qq_1039370322的博客 321

JS数组slice()和splice()的用法和区别

JS数组slice()和splice()的区别 slice() var a=["a","b","c","d","e"]; console.log(a.slice(1,3)); //结果:"b" ,"c" //表示从1开始,截止到第三个,包含第三个,不包括第一 console.log(a); //结果:"a","b","c","d","e" console.log(a.slice(-1)); //结果:"e" // 如果start是负数,则会从数组

weixin_51109349的博客 885

slice()函数的用法

从start下标开始(包括start),到end(不包括end,如果没有end参数,则到字符串的结尾),复制数组到新的数组。输出:['a', 'b', 'c', 'e', 'f']['a', 'b', 'c', 'e', 'f']6、arr.slice('1') arr.slice([1]) 中的参数会被转化成数字。输出:['a', 'b', 'c', 'e', 'f']输出:['a', 'b', 'c'] false。输出:['c', 'e', 'f']输出:['b', 'c']

galaxyJING的博客 858

JS中数组splice、slice和字符串slice、split的混淆

数组方法 slice(剪裁方法(返回新数组,不影响原来的数组) (1)无参:如果不传入参数的情况下, silce()方法返回完整的数组 (2)1个参数:在只有一个参数的情况下,slice()方法返回从该参数指定位置开始到当前数组末尾的所有项。 (3)2个参数:如果有两个参数,该方法返回起始和结束位置之间的项——但不包括结束位置的项。 let arr = ["张","刘","理想"] let newarr = arr.slice(); console.log(arr); cons

qq_41260655的博客 4697

【面试题】数组slice和splice的区别

本文介绍slice和splice的区别,以及用法。

zx1041561837的博客 960

js中slice和splice的区别

一、Array.slice() 方法可从已有的数组中返回选定的元素。 slice(start,end)从哪到哪开始删除/截取 start 开始索引 end 结束索引,可以不传,默认截取从start往后的所有元素; 索引可以为负数,从后往前截取,-1倒数第一个,-2倒数第二个; 该方法不会改变原有数组,而是返回一个子数组。如果想删除数组中的一段元素,应该使用方法 Array.splice()。 var arr1 = ["a", "b", "c", "d", "e"]; console.log

Schaffer的博客 499
上一篇: Openlayer3之如何查看以前版本的API
下一篇: Error: [$rootScope:inprog]http://errors.angularjs.org/1.5.8/$rootScope/inprog?p0=%24apply 解决方案
Console_DS
博客等级 码龄10年 2粉丝 14原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值