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

首頁 > 語言 > JavaScript > 正文

js 數組克隆方法 小結

2024-05-06 14:10:57
字體:
來源:轉載
供稿:網友
因此如果要創建一個與已經存在的對象內容相同的對象,不能通過簡單的賦值操作。這樣說的可能還是不太明白。

看下面的例子:
代碼如下:
var a=[1,2,3,4]; var b=a;c=b; a.pop(); //移除最后一個元素 alert(b); //彈出1,2,3 alert(c); //彈出1,2,3
var a=[1,2,3,4]; var b=a;c=b; a.pop(); //移除最后一個元素 alert(b); //彈出1,2,3 alert(c); //彈出1,2,3

我們執行上面的代碼發現,在a的內容做改變后,變量b和c的結果也改變了。

上面的情況也許不是我們所需要的,我們希望的是創建一個與原對象內容一樣的“新”對象。這樣我們就需要通過一些克隆的辦法來實現。

JS里Array也是一種Object。這里我們主要總結一下Array的克隆方式,我們這里為Array原生對象擴展一個clone方法。

1、最簡單的辦法,就是創建一個新數組,并遍歷數組逐項添加到新數組中。
代碼如下:
Array.prototype.clone=function(){ var a=[]; for(var i=0,l=this.length;i<l;i++) a.push(this[i]); return a; }
Array.prototype.clone=function(){ var a=[]; for(var i=0,l=this.length;i<l;i++) a.push(this[i]); return a; }

這種實現方式是最容易想到也是最容易理解的,但是代碼有點復雜了,我們仔細研究Array的一些方法,其實還有一個很簡單的辦法。下面說一下其它的兩種辦法。

2、通過Array對象的slice方法。

slice方法是通過參數start和end的傳入值來返回數組中的一段,該方法不對原數組進行操作。我們通過slice(0)可以使其返回所有項。
代碼如下:
Array.prototype.clone=function(){ return this.slice(0); }
Array.prototype.clone=function(){ return this.slice(0); }

3、通過Array對象的concat方法。
concat方法是用來實現數組的合并的。通過和一個空函數的合并,即可實現我們的克隆功能。
代碼如下:
Array.prototype.clone=function(){ return [].concat(this); } //或者 Array.prototype.clone=function(){ return this.concat(); }
Array.prototype.clone=function(){ return [].concat(this); } //或者 Array.prototype.clone=function(){ return this.concat(); }

如果發揮想象應該還有其它的辦法,以上只是本人想到的兩種方法。

JavaScript 克隆數組最簡單的方法

JavaScript數組的快速克隆(slice()函數)和數組的排序、亂序和搜索(sort()函數)
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 金堂县| 临潭县| 聂拉木县| 巨野县| 祁阳县| 来安县| 土默特右旗| 鄢陵县| 虹口区| 高淳县| 仁布县| 丰镇市| 图木舒克市| 蒙自县| 依兰县| 句容市| 集安市| 育儿| 巫山县| 克拉玛依市| 焦作市| 伽师县| 怀宁县| 大丰市| 永川市| 唐河县| 西吉县| 临高县| 泗水县| 城步| 邹城市| 建平县| 阳高县| 亳州市| 佛教| 越西县| 梁山县| 安多县| 高淳县| 海林市| 仙居县|