再次认识slice和splice,比较总结

  这两个方法都算是处理数组中经常的了。但是看似功能相似,其实区别还是蛮大的,尤其是splice。抽空做一个比较,不算深入吧,至少避免在今后的开发开发过程中出现不必要的麻烦。

英文:

  slice:切成片; 切下; 划分;

  splice:绞接; 捻接(两段绳子); 胶接; 粘接(胶片、磁带等);

定义:
* slice:slice() 方法可从已有的数组中返回选定的元素;
* splice:splice() 方法向/从数组中添加/删除项目,然后返回被删除的项目;
功能:
共性:
1.都是对数组的操作,通过起始位置和终点位置来获取数组。
差异性:
1.splice是对数组对象本身的操作,可以向数组指定位置注入新的元素,同时修改的也是数组对象本身。
2.slice的操作是一种copy的行为,将指定的始末位置的元素copy到一个新的数组对象上,而数组对象本身并没有发生改变。
3.splice多一个注入元素的功能。
返回结果对比:
* slice会返回指定的数组,但是不会修改数组。返回的是一个新的数组对象。
* splice是针对数组的操作,他返回的就是调用这个方法的对象。

引发的问题:
1.splice对数组本身的操作会引发问题(踩过坑),尤其在for循环时如果你的循环次数是依赖数组的length来决定的话,那么在for循环体内千万不要做splice的操作,
因为splice的操作会导致数组本身的长度发生变化,循环次数就会被影响,直接影响输出结果的准确性。
2.如果要用splice操作数组,要考虑清楚之前是不是有将这个数组赋值给别的变量过,毕竟赋值后大家都指向了一个对象,你变动,赋值对象也会一起变动,如果splice操作后又需要操作
该数组,也是会引发问题的。不要试图通过赋值来保存需要修改的数组。
3.对splice的使用还是要谨慎,当然有特定的场景发挥他的作用,但是如果只是单纯想要数组中指定的元素,还是slice比较保险。毕竟独立出新的对象是大大降低了耦合性的。

时间: 2024-08-17 09:33:24

再次认识slice和splice,比较总结的相关文章

slice()、splice()详解

前面在开发的时候对于slice().splice()这两个函数老是模糊不清,不清楚具体的参数传参以及用法. 今天写个笔记专门记录一下. 1.slice()  从指定位置删除数组里面的元素,可以传一个或者两个参数.不破坏原来的数组. var a=[1,2,3,4,5]; alert(a.slice(2)); //3,4,5 alert(a.slice(2,1)) //3 2.splice()这个就比slice强大太多了,主要有删除.插入.替换三个功能.基本可以代替slice()使用. 删除:可以删

concat()、slice()、splice()

concat() 方法可以基于当前数组中的所有项创建一个新数组.具体来说,这个方法会先创建当前数组的一个副本,然后将接收到的参数添加到这个副本的末尾,最后返回新构建的数组.在没有给 concat() 方法传递参数的情况下,它只是复制当前数组并返回副本.如果传递给 concat() 方法的是一或多个数组,则该方法会将这些数组中的每一项都添加到结果数组中.如果传递的值不是数组,这些值就会被简单地添加到结果数组的末尾.如下所示: var colors = ["red", "gree

关于数组的 slice() 和 splice() 方法

slice() 是创建一个新的数组(所以不能 array.slcie(1,4)这样用 必须 var a = array.slice(1,4) 这样赋给一个变量吗? ),并且这个例子的返回值是 数组的 1 到 3(没有4)项 splice() 是在原数组上进行操作,因此可以是 array.splice(1,4) 也可以是 var a = array.splice(1,4) 但是要注意,splice的(1,4) 中的 1 和 slice(1,4) 的 1 含义相同,都表示从 数组索引为1开始,但是

JavaScript中的slice() 和 splice()

slice() 和 splice() 是 JavaScript 中 Array 对象原型的两个方法,由于方法名很相像,经常会记混两者的作用,下面来做一个明确的区分. 1.slice(start[, end]): 从数组中取元素,返回取出的子数组,对原数组无影响.其中,start 参数必填,表示取元素的起始位置:end 参数可选,表示取元素的终止位置,但不包含 array[end] 元素(可以理解为最终取出的数组中元素有 end -start 个),如果 end 为空,则默认为array.leng

js中slice、splice用法与区别

1.slice(start,end)(参数可选) slice() 方法返回一个从开始到结束(不包括结束)选择的数组的一部分浅拷贝到一个新数组对象.原始数组不会被修改. var a = ['a', 'b', 'c', 'd'] var b = a.slice(0, 1) console.log(a); //['a', 'b', 'c', 'd'] console.log(b); //['a'] 不传参数,默认从0开始,可以复制数组: var a = ['a', 'b', 'c', 'd'];var

slice()与splice()

定义 splice() 方法 用于插入.删除或替换数组的元素. slice() 方法 可提取字符串的某个部分,返回一个新的数组,包含从 start 到 end (不包括该元素)的 arrayObject 中的元素.. 用法        splice 的参数 :splice (start, deleteCount, [item1[, item2[, . . . [,itemN]]]]) 数组从 start下标开始,删除deleteCount 个元素,并且可以在这个位置开始添加 n个元素.当sta

slice、splice、splite区别

这三个长得很像,具体功能却差很多. slice: 定义:接收一个或两个参数,它可以创建一个由当前数组中的一项或多项组成的新数组.返回为新数组,以前的数组没有变化. var allArray = [1,2,3,4]; var sliceArray = allArray.slice(1,2); 此时allArray还是[1,2,3,4],silceArray是[2] splice: 一个强大的js数组操作方法,可以完成删除.插入.替换(删除+插入)功能. arrayObject.splice(ind

slice、splice和split

1.slice(数组) 用法:array.slice(start,end) 解释:该方法是对数组进行部分截取,并返回一个数组副本:参数start是截取的开始数组索引,end参数等于你要取的最后一个字符的位置值加上1(可选) //如果不传入参数二,那么将从参数一的索引位置开始截取,一直到数组尾var a=[1,2,3,4,5,6];var b=a.slice(0,3); //[1,2,3] var c=a.slice(3); //[4,5,6] //如果两个参数中的任何一个是负数,array.le

JS中的slice()和splice()的区别以及记忆方式

总结 splice()会改变原来的数组,返回的是被改变的内容,比如说通过splice删掉了某一项,那么返回的是删掉的这一项,当然还是会以数组的形式返回. slice不会对原数组进行改变,会返回一个新的数组.利用slice同样也可以实现根据索引删除某一项 我是怎么记忆的 splice的前缀是sp,sp代表着super是超级的意思,说明它有超级权限,就是说会改变原有数组的权限,会对原有数组进行删除增加的权限.sp的p念起来就是屁,屁被人体减去的东西,因此splice返回值的就是 被删除的东西. 详解