吐槽Javascript系列二:数组中的splice和slice要领

战斗英雄你当,美丽媳妇儿你娶,怎样啥功德都被你给占了——《热情熄灭的光阴》

谈起这两个要领,新手不蒙,我是不信!正如吐槽Javascript系列一:slice()、substr()和 substring()中提到的,字符串中也有一个slice要领,极易殽杂!
但实在呢,在数组中,他们照样很好辨别的。

splice

splice,译为拼接,它的功用异常壮大,可以删除,新增,修正原数组,功用三合一哦,我们先来看它的删除功用:

// 删除
let colors = ['red', 'green', 'blue']
let removed = colors.splice(0, 1)
console.log(removed) // [ 'red' ]
console.log(colors) // [ 'green', 'blue' ]

上面代码中,splice接收了二个参数,第一个参数示意要删除的第一项的位置,第二个参数示意要删除的项数。
我们再来看看它的增加功用:

// 增加
let colors = ['red', 'green', 'blue']
let removed = colors.splice(1, 0, 'yellow', 'orange')
console.log(removed) // []
console.log(colors) // [ 'red', 'yellow', 'orange', 'green', 'blue' ]

上面代码中,splice接收了四个参数,第一个参数示意要删除的第一项的位置,第二个参数示意要删除的项数,从第三个参数最先,示意要增加的项。
我们再来看看它的替代功用:

// 替代
let colors = ['red', 'green', 'blue', 'orange']
let removed = colors.splice(2, 1, 'yellow', )
console.log(removed) // [ 'blue' ]
console.log(colors) // [ 'red', 'green', 'yellow', 'orange' ]

上面代码中,splice接收了三个参数,第一个参数示意要删除的第一项的位置,第二个参数示意要删除的项数,第三个参数示意要增加的项。
本来,它的替代功用实际上是经由过程删除和增加来完成的。

说完splice,接下来讲slice。

slice

slice,译为切开,我们来看例子:

let arr = ['red', 'green', 'blue', 'yellow']
let arr1 = arr.slice(1)
let arr2 = arr.slice(1, 2)

console.log(arr1) // [ 'green', 'blue', 'yellow' ]
console.log(arr2) // [ 'green' ]
console.log(arr) // [ 'red', 'green', 'blue', 'yellow' ]

slice接收一或两个参数,即要返回项的肇端和完毕位置。在只要一个参数的情况下,slice()要领返回从该参数指定位置最先到当前数组末端的一切项。它并不转变原数组。

吐槽splice

我曾一向疑心数组中的删除要领,当晓得删除这项巨大的使命居然交给了splice,我内心是扫兴的。
不该该是del或许remove才像话吗?删除的功用它占了也就算了,增加的功用它也占了!它既能增加,也能删除,还能拼接,那它为何没有七十二变?

吐槽slice

一个西瓜,被菜刀切成几块,这西瓜照样本来的西瓜吗?那一个数组,被你切了几下,那数组照样本来的数组吗?

    原文作者:moddx
    原文地址: https://segmentfault.com/a/1190000018170710
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞