1. 程式人生 > >陣列的常用方法(2)--es3.0:unshift,shift,reverse,splice與陣列的負位

陣列的常用方法(2)--es3.0:unshift,shift,reverse,splice與陣列的負位

unshift

他是往數組裡面加東西的!!!而且還是在陣列的前面開始加

咱看看能不能和push那樣加好幾個進去

可以!

現在怎麼寫呢?還和push一樣?

 

            var arr = [1,2,3];
			Array.prototype.unshift = function(){
				for(var i = 0 ;i , arguments.length; i ++){
					this[0] = arguments[i];
				}
				return this.length;
			}

 

對嗎?

不對吧,不僅是覆蓋了,而且還少,如果我在這裡放(-1,0),在迴圈arguments的時候先迴圈出的-1,然後在迴圈出的0,那0肯定是在-1前頭了!

 

咱先考慮一個問題,能不能在陣列的-1為放東西?

不能吧!怎麼辦呢?

我拿一個新陣列,把這兩個陣列拼在一起不就完事了!而且陣列還有拼接方法。

 

Shift

那同理shift就是從前面開始減唄。

 

 

Reverse

他能把陣列逆轉,兩次reverse還可以把陣列還原回來。

 

 

Splice

這個splice是除了sort以外比較難的方法。

arr.splice(從第幾位開始,擷取多少的長度,在切口處新增新的資料);

 

前兩個引數是從第幾位開始擷取,擷取幾位,從第三個引數開始就是在切口處往數組裡面新增東西。

var arr = [1,2,3,5];//我想把4新增進去。

所以你要在第三位(注意游標)開始切,切0個,然後放進4.

這樣是不是有了splice方法,那個unshift方法就可以代替了吧(截0個,往裡面插東西)。

那splice()能從負位開始擷取嗎?

數組裡面負數是倒數第幾位的意思,從後面往前擷取。

系統在數組裡面執行負數的時候,他會這樣splice = function(){pos += pos > 0 ? 0 : this.length;}

執行,-1+4=3,如果你越界了,他會提前判斷的。