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,如果你越界了,他会提前判断的。