国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 編程 > JavaScript > 正文

JavaScript中splice與slice的區(qū)別

2019-11-19 16:38:05
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

splice與slice是數(shù)組中的兩個(gè)常用方法,但是很多初學(xué)者很容易將二者混淆。

slice的操作不影響原數(shù)組。會(huì)返回所選擇的元素。

splice往數(shù)組中指定位置添加或刪除元素,會(huì)影響原數(shù)組。返回被刪除的元素。

slice()

可從已有的數(shù)組中返回選定的元素。

語(yǔ)法

arrayObject.slice(start,end)

start 必需。規(guī)定從何處開(kāi)始選取。如果是負(fù)數(shù),那么它規(guī)定從數(shù)組尾部開(kāi)始算起的位置。也就是說(shuō),-1 指最后一個(gè)元素,-2 指倒數(shù)第二個(gè)元素,以此類(lèi)推。

end 可選。規(guī)定從何處結(jié)束選取。該參數(shù)是數(shù)組片斷結(jié)束處的數(shù)組下標(biāo)。如果沒(méi)有指定該參數(shù),那么切分的數(shù)組包含從 start 到數(shù)組結(jié)束的所有元素。如果這個(gè)參數(shù)是負(fù)數(shù),那么它規(guī)定的是從數(shù)組尾部開(kāi)始算起的元素。

var arr = [1,2,3,4,5,6]arr.slice(2, 3) //返回[3]

splice()

splice() 方法向/從數(shù)組中添加/刪除項(xiàng)目,然后返回被刪除的項(xiàng)目。

注釋?zhuān)涸摲椒〞?huì)改變?cè)紨?shù)組。
arrayObject.splice(index,howmany,item1,.....,itemX)

index 必需。整數(shù),規(guī)定添加/刪除項(xiàng)目的位置,使用負(fù)數(shù)可從數(shù)組結(jié)尾處規(guī)定位置。

howmany 必需。要?jiǎng)h除的項(xiàng)目數(shù)量。如果設(shè)置為 0,則不會(huì)刪除項(xiàng)目。

item1, ..., itemX 可選。向數(shù)組添加的新項(xiàng)目。

如,向數(shù)組的起始位置插入一個(gè)新的元素  -1

var arr = [1,2,3,4,5,6]arr.splice(0,0, -1) //返回[],第二個(gè)參數(shù)為0,即不刪除任何元素console.log(arr)> [-1, 1, 2, 3, 4, 5, 6]

用slice復(fù)制數(shù)組

使用 slice(0) 可以快速?gòu)?fù)制并生成 一個(gè)新的數(shù)組,不過(guò)數(shù)組是新的,里面的元素還是原來(lái)的引用,比如:

var o = [1, 2]var arr = [ 3, 4, o ]var clone = arr.slice(0)console.log(clone)> [3, 4, Array[2]]

用concat復(fù)制數(shù)組

Array.concat 數(shù)組拼接函數(shù)也可以用來(lái)復(fù)制數(shù)組,比如:

var o = [1, 2]var arr = [ 3, 4, o ]var clone = arr.concat()console.log(clone)> [3, 4, Array[2]]

不過(guò) slice和concat 生成的數(shù)組是新的,但里面的元素還是原來(lái)的引用,比如:

clone[2].push(3)console.log(o)> [1, 2, 3]

用JSON parse/ strinigfy 進(jìn)行深度復(fù)制

可以使用 JSON.parse(JSON.stringify(arr)) 對(duì)對(duì)象或數(shù)組進(jìn)行快速深度復(fù)制,此種方法無(wú)法復(fù)制 function 等無(wú)法序列化的對(duì)象,比如:

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元素沒(méi)有變化

參考:

//www.survivalescaperooms.com/w3school/jsref/jsref_slice_array.htm

//www.survivalescaperooms.com/w3school/jsref/jsref_splice.htm

發(fā)表評(píng)論 共有條評(píng)論
用戶(hù)名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 潢川县| 仙桃市| 云阳县| 西平县| 中卫市| 汕头市| 广灵县| 常山县| 咸阳市| 博爱县| 丰城市| 肃宁县| 克拉玛依市| 慈利县| 右玉县| 岳阳县| 墨江| 黑龙江省| 阳山县| 呈贡县| 万载县| 克东县| 清原| 辽阳市| 建宁县| 广灵县| 越西县| 崇左市| 东源县| 柘荣县| 富宁县| 磴口县| 穆棱市| 陇川县| 沿河| 建宁县| 沧州市| 陆良县| 团风县| 安徽省| 镇宁|