js數組的一些技巧算法

js數組倒序

reverse() 方法用於顛倒數組中元素的順序。

 

因此如果要創建一個與已經存在的對象內容相同的對象,不能通過簡單的賦值操作。這樣說的可能還是不太明白。 

看下面的例子: 

複製代碼代碼如下:

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(); } 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章