不要乱来

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

  这两个方法都算是处理数组中经常的了。但是看似功能相似,其实区别还是蛮大的,尤其是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比较保险。毕竟独立出新的对象是大大降低了耦合性的。

 

posted on 2017-08-26 15:05  不要乱来  阅读(848)  评论(0编辑  收藏  举报