最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

 更新時間:2014年04月16日 10:22:09   作者:  
在使用JavaScript對數(shù)組進(jìn)行操作的時候,我們經(jīng)常需要將數(shù)組進(jìn)行備份,事實(shí)證明如果只是簡單的將它賦予其他變量,那么我們只要更改其中的任何一個,然后其他的也會跟著改變,這就導(dǎo)致了問題的發(fā)生。

例如這個例子:

復(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

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

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

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

對于array對象的slice函數(shù),
返回一個數(shù)組的一段。(仍為數(shù)組)
arrayObj.slice(start, [end]) 
參數(shù)
arrayObj 
必選項(xiàng)。一個 Array 對象。 
start 
必選項(xiàng)。arrayObj 中所指定的部分的開始元素是從零開始計(jì)算的下標(biāo)。 
end 
可選項(xiàng)。arrayObj 中所指定的部分的結(jié)束元素是從零開始計(jì)算的下標(biāo)。 
說明
slice 方法返回一個 Array 對象,其中包含了 arrayObj 的指定部分。
slice 方法一直復(fù)制到 end 所指定的元素,但是不包括該元素。如果 start 為負(fù),將它作為 length + start處理,此處 length 為數(shù)組的長度。如果 end 為負(fù),就將它作為 length + end 處理,此處 length 為數(shù)組的長度。如果省略 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() 方法用于連接兩個或多個數(shù)組。
該方法不會改變現(xiàn)有的數(shù)組,而僅僅會返回被連接數(shù)組的一個副本。
語法
arrayObject.concat(arrayX,arrayX,......,arrayX)
說明
返回一個新的數(shù)組。該數(shù)組是通過把所有 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

相關(guān)文章

最新評論

新源县| 乐都县| 来安县| 宁南县| 鹤岗市| 静宁县| 闸北区| 丹阳市| 锡林郭勒盟| 建平县| 故城县| 天津市| 宁海县| 额尔古纳市| 东港市| 馆陶县| 沙湾县| 涟源市| 大安市| 东乡族自治县| 彰武县| 商都县| 黑山县| 昆明市| 阆中市| 林口县| 鲜城| 伽师县| 三门峡市| 页游| 巨野县| 罗平县| 清苑县| 连州市| 贵德县| 桦川县| 新蔡县| 夏河县| 西城区| 大宁县| 兴化市|