陣列的常用方法(2)--es3.0:unshift,shift,reverse,splice與陣列的負位
阿新 • • 發佈:2018-11-12
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;}