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

首頁(yè) > 語(yǔ)言 > JavaScript > 正文

JavaScript數(shù)組深拷貝和淺拷貝的兩種方法

2024-05-06 16:04:12
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友
在使用JavaScript對(duì)數(shù)組進(jìn)行操作的時(shí)候,我們經(jīng)常需要將數(shù)組進(jìn)行備份,事實(shí)證明如果只是簡(jiǎn)單的將它賦予其他變量,那么我們只要更改其中的任何一個(gè),然后其他的也會(huì)跟著改變,這就導(dǎo)致了問(wèn)題的發(fā)生。

例如這個(gè)例子:

復(fù)制代碼 代碼如下:

var arr = ["One","Two","Three"];

var arrto = arr;
arrto[1] = "test";
document.writeln("數(shù)組的原始值:" + arr + "<br />");//Export:數(shù)組的原始值:One,test,Three
document.writeln("數(shù)組的新值:" + arrto + "<br />");//Export:數(shù)組的新值:One,test,Three

像上面的這種直接賦值的方式就是淺拷貝,很多時(shí)候,這樣并不是我們想要得到的結(jié)果,其實(shí)我們想要的是arr的值不變,不是嗎?

方法一:js的slice函數(shù)

復(fù)制代碼 代碼如下:


對(duì)于array對(duì)象的slice函數(shù),
返回一個(gè)數(shù)組的一段。(仍為數(shù)組)
arrayObj.slice(start, [end]) 
參數(shù)
arrayObj 
必選項(xiàng)。一個(gè) Array 對(duì)象。 
start 
必選項(xiàng)。arrayObj 中所指定的部分的開(kāi)始元素是從零開(kāi)始計(jì)算的下標(biāo)。 
end 
可選項(xiàng)。arrayObj 中所指定的部分的結(jié)束元素是從零開(kāi)始計(jì)算的下標(biāo)。 
說(shuō)明
slice 方法返回一個(gè) Array 對(duì)象,其中包含了 arrayObj 的指定部分。
slice 方法一直復(fù)制到 end 所指定的元素,但是不包括該元素。如果 start 為負(fù),將它作為 length + start處理,此處 length 為數(shù)組的長(zhǎng)度。如果 end 為負(fù),就將它作為 length + end 處理,此處 length 為數(shù)組的長(zhǎng)度。如果省略 end ,那么 slice 方法將一直復(fù)制到 arrayObj 的結(jié)尾。如果 end 出現(xiàn)在 start 之前,不復(fù)制任何元素到新數(shù)組中。


例子:

復(fù)制代碼 代碼如下:


var arr = ["One","Two","Three"];

var arrtoo = arr.slice(0);
arrtoo[1] = "set Map";
document.writeln("數(shù)組的原始值:" + arr + "<br />");//Export:數(shù)組的原始值:One,Two,Three
document.writeln("數(shù)組的新值:" + arrtoo + "<br />");//Export:數(shù)組的新值:One,set Map,Three

方法二:js的concat方法

復(fù)制代碼 代碼如下:


concat() 方法用于連接兩個(gè)或多個(gè)數(shù)組。
該方法不會(huì)改變現(xiàn)有的數(shù)組,而僅僅會(huì)返回被連接數(shù)組的一個(gè)副本。
語(yǔ)法
arrayObject.concat(arrayX,arrayX,......,arrayX)
說(shuō)明
返回一個(gè)新的數(shù)組。該數(shù)組是通過(guò)把所有 arrayX 參數(shù)添加到 arrayObject 中生成的。如果要進(jìn)行 concat() 操作的參數(shù)是數(shù)組,那么添加的是數(shù)組中的元素,而不是數(shù)組。
var arr = ["One","Two","Three"];


例子:

復(fù)制代碼 代碼如下:

  
var arrtooo = arr.concat();
arrtooo[1] = "set Map To";
document.writeln("數(shù)組的原始值:" + arr + "<br />");//Export:數(shù)組的原始值:One,Two,Three
document.writeln("數(shù)組的新值:" + arrtooo + "<br />");//Export:數(shù)組的新值:One,set Map To,Three

發(fā)表評(píng)論 共有條評(píng)論
用戶(hù)名: 密碼:
驗(yàn)證碼: 匿名發(fā)表

圖片精選

主站蜘蛛池模板: 余姚市| 桐梓县| 林州市| 肥乡县| 佳木斯市| 深州市| 北碚区| 双辽市| 桂阳县| 靖安县| 定州市| 虹口区| 建阳市| 卢氏县| 英超| 南投县| 凌源市| 正蓝旗| 康保县| 三原县| 皮山县| 商城县| 邢台市| 双桥区| 崇文区| 金沙县| 苏尼特左旗| 东方市| 德惠市| 砀山县| 崇左市| 若羌县| 中超| 合阳县| 凤凰县| 沁阳市| 博湖县| 张家港市| 大丰市| 盐源县| 常山县|