splice与slice是数组中的两个常用方法,但是很多初学者很容易将二者混淆。
slice的操作不影响原数组。会返回所选择的元素。
splice往数组中指定位置添加或删除元素,会影响原数组。返回被删除的元素。
slice()
可从已有的数组中返回选定的元素。
语法
arrayObject.slice(start,end)
start 必需。规定从何处开始选取。如果是负数,那么它规定从数组尾部开始算起的位置。也就是说,-1 指最后一个元素,-2 指倒数第二个元素,以此类推。
end 可选。规定从何处结束选取。该参数是数组片断结束处的数组下标。如果没有指定该参数,那么切分的数组包含从 start 到数组结束的所有元素。如果这个参数是负数,那么它规定的是从数组尾部开始算起的元素。
var arr = [1,2,3,4,5,6] arr.slice(2, 3) //返回[3]
splice()
splice() 方法向/从数组中添加/删除项目,然后返回被删除的项目。
注释:该方法会改变原始数组。
arrayObject.splice(index,howmany,item1,.....,itemX)
index 必需。整数,规定添加/删除项目的位置,使用负数可从数组结尾处规定位置。
howmany 必需。要删除的项目数量。如果设置为 0,则不会删除项目。
item1, ..., itemX 可选。向数组添加的新项目。
如,向数组的起始位置插入一个新的元素 -1
var arr = [1,2,3,4,5,6] arr.splice(0,0, -1) //返回[],第二个参数为0,即不删除任何元素 console.log(arr) > [-1, 1, 2, 3, 4, 5, 6]
用slice复制数组
使用 slice(0) 可以快速复制并生成 一个新的数组,不过数组是新的,里面的元素还是原来的引用,比如:
var o = [1, 2] var arr = [ 3, 4, o ] var clone = arr.slice(0) console.log(clone) > [3, 4, Array[2]]
用concat复制数组
Array.concat 数组拼接函数也可以用来复制数组,比如:
var o = [1, 2] var arr = [ 3, 4, o ] var clone = arr.concat() console.log(clone) > [3, 4, Array[2]]
不过 slice和concat 生成的数组是新的,但里面的元素还是原来的引用,比如:
clone[2].push(3) console.log(o) > [1, 2, 3]
用JSON parse/ strinigfy 进行深度复制
可以使用 JSON.parse(JSON.stringify(arr)) 对对象或数组进行快速深度复制,此种方法无法复制 function 等无法序列化的对象,比如:
var o = [1, 2] var arr = [ 3, 4, o ] var clone = JSON.parse(JSON.stringify(arr)) console.log(clone) > [3, 4, Array[2]] clone[2].push(3) console.log(o) > [1, 2] //o元素没有变化
参考:
https://www.jb51.net/w3school/jsref/jsref_slice_array.htm
https://www.jb51.net/w3school/jsref/jsref_splice.htm
免责声明:本站资源来自互联网收集,仅供用于学习和交流,请遵循相关法律法规,本站一切资源不代表本站立场,如有侵权、后门、不妥请联系本站删除!
更新日志
- 【雨果唱片】中国管弦乐《鹿回头》WAV
- APM亚流新世代《一起冒险》[FLAC/分轨][106.77MB]
- 崔健《飞狗》律冻文化[WAV+CUE][1.1G]
- 罗志祥《舞状元 (Explicit)》[320K/MP3][66.77MB]
- 尤雅.1997-幽雅精粹2CD【南方】【WAV+CUE】
- 张惠妹.2007-STAR(引进版)【EMI百代】【WAV+CUE】
- 群星.2008-LOVE情歌集VOL.8【正东】【WAV+CUE】
- 罗志祥《舞状元 (Explicit)》[FLAC/分轨][360.76MB]
- Tank《我不伟大,至少我能改变我。》[320K/MP3][160.41MB]
- Tank《我不伟大,至少我能改变我。》[FLAC/分轨][236.89MB]
- CD圣经推荐-夏韶声《谙2》SACD-ISO
- 钟镇涛-《百分百钟镇涛》首批限量版SACD-ISO
- 群星《继续微笑致敬许冠杰》[低速原抓WAV+CUE]
- 潘秀琼.2003-国语难忘金曲珍藏集【皇星全音】【WAV+CUE】
- 林东松.1997-2039玫瑰事件【宝丽金】【WAV+CUE】