数组的常用方法(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,如果你越界了,他会提前判断的。

 

 

 

猜你喜欢

转载自blog.csdn.net/hdq1745/article/details/83752281