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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了再次认识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比较保险。毕竟独立出新的对象是大大降低了耦合性的。

 




















以上是关于再次认识slice和splice,比较总结的主要内容,如果未能解决你的问题,请参考以下文章

js中的splice方法和slice方法简单总结

区分数组的splice,split,slice方法

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

splice和slice的区别

数组的splice 与 slice有啥区别

js数组的splice方法和slice方法的区别