/*push(); 入栈,在数组的最后添加一个元素. 参数:要入栈的元素.返回值:数组长度*/ //重构myPush(),插入一个元素 Array.prototype.myPush = function(){ //将需要插入数组的元素赋值给原数组最后一个索引,实现插入元素功能 for(var i=0;i<arguments.length;i++){ this[this.length] = arguments[arguments.length-1]; } //返回数组长度 return this.length; } var arr = [1,2,3,4]; var result = arr.myPush(5); console.log('原数组',arr); //[1,2,3,4,5] console.log('返回值',result); //5 // 重构myPush(),插入多个元素 Array.prototype.myPush = function () { //定义num并将新数组长度赋值给num,新数组长度=原数组长度+插入元素长度 var num = this.length+arguments.length; //将原数组长度赋值给len var len = this.length; //将需要插入数组的多个元素赋值给原数组最后一个索引,实现插入元素功能 for(var i=0;i<arguments.length;i++){ arr[len+i]=arguments[i]; } //返回新数组长度 return num; }; var arr = [1,2,3,4]; var result = arr.myPush(5,6,7); console.log('原数组',arr); //[1,2,3,4,5] console.log('返回值',result); /*pop(); 从数组的最后取出一个元素. 返回值:出栈的元素. 原数组删除最后一个数*/ //重构myPop(); Array.prototype.myPop = function(){ // 拿到数组的最后一个数 var result = this.length; // 通过lenght属性删除数 this.length = this.length-1; // 返回被删除的数 return result; } var arr = [1,2,3,4,5,6,7]; var result = arr.myPop(); console.log('原数组',arr); //[1,2,3,4,5,6] console.log('返回值',result); //7 /*shift(); 出队,将数组中第一个元素取出来. 参数:none. 返回值:出队的元素. 原数组第一项被删除*/ //重构myShift(); Array.prototype.myShift = function(){ // 拿到数组第一个数 var result = this[0]; // 将数组的第二项赋值给第一项,第三项赋值给第二项... for(var i=0;i<this.length-1;i++){ this[i] = this[i+1]; } // 通过length属性删除最后一项 this.length--; //返回被删除的项 return result; } var arr = [1,3,5,7,9]; var result = arr.myShift(); console.log('1 原数组',arr); //[3,5,7,9] console.log('返回值',result); //1 /*unshift(); 插队,将元素插入在数组的最前面. 返回值:插队后队列的长; 原数组新增插入的元素*/ //重构myUnshift(); Array.prototype.myUnshift = function(){ // 插入数之后的长度 = 原数组的长度 + 插入数的长度 var num = this.length + arguments.length; // 将这个长度给了数组之后,数组会多出来相应的空槽 this.length = num; // 将原数组中的数向后移动 for(var i=this.length-1;i>=arguments.length;i--){ this[i] = this[i-arguments.length]; } // 将需要插入的值赋值给数组前面 for(var j=0;j<arguments.length;j++){ this[j] = arguments[arguments.length-j-1]; } return num; } var arr = [5,4,3,2,1]; var result = arr.myUnshift(22,44,66,88); console.log('原数组',arr); //[88,66,44,22,5,4,3,2,1] console.log('返回值',result); //9