//数组常用方法原理(涵pop(),shift(),push(),unshift(),reverse()等原型方法)
//数组常用方法原理
var arr=[1,2,3,4,6];
//arr是对象 所以要用隐式原型 在此之前 需要明白 在这个原型中 this指向当前对象 即arr
//先把这5个完全理解 理解了自己关上代码 重新自己敲一遍 然后搞定了 再尝试写后面的 写之前 要明白要写什么 逻辑怎么写
arr.proto={
//1.pop()删除数组的最后一个元素并返回删除的元素。
__pop:function(){
//获取最后一个元素
var last=this[this.length-1];
//改变数组元素长度 -1
this.length-=1;
//返回最后一个元素
return last;
},
//2.shift()删除并返回数组的第一个元素
_shift:function(){
//获取第一个元素
var first=this[0];
//循环数组 将后面一个元素赋值给前一个元素 比如将1的值赋给0 2的值赋给1 …
for(var i=1;i<this.length;i++){
this[i-1]=this[i];
}
//改变数组长度 -1
this.length-=1;
//返回第一个元素
return first;
},
//3.push()向数组的末尾添加一个或更多元素,并返回新的长度
_push:function(){
//循环获取添加的元素的长度 因为添加元素的长度是不确定值
for(var i=0;i<arguments.length;i++){
//数组.length 就是数组最后一个值 添加进去新元素
this[this.length]=arguments[i];
}
//返回新元素的长度
return this.length;
},
//4.unshift()向数组的开头添加一个或更多元素,并返回新的长度。
_unshift:function(){
//创建一个新数组
var newArr=[];
//循环获取添加的元素的长度 因为添加元素的长度是不确定值
for(var i=0;i<arguments.length;i++){
//将元素添加到新数组中
newArr[i]=arguments[i];
}
//循环数组
for(var i=0;i<this.length;i++){
//将数组的元素添加到新数组的后面
newArr[newArr.length]=this[i];
}
//将新数组的值赋给原数组this
for(var i=0;i<newArr.length;i++){
this[i]=newArr[i];
}
//返回数组长度
return this.length;
},
// 5.reverse()反转数组的元素顺序
__reverse:function(){
var index=0;
var newArr=[];
//这题试着自己理解
for(var i=this.length-1;i>=0;i–){
newArr[index]=this[i];
index++;
}
for(var i=0;i<newArr.length;i++){
this[i]=newArr[i];
}
return this;
}
}
console.log(arr.__reverse())
console.log(arr)
数组方法原理解析
本文深入解析了数组的五个核心方法:pop(), shift(), push(), unshift(), reverse()的实现原理。通过手写代码的方式,详细阐述了这些方法如何操作数组元素,包括删除、添加元素及反转数组顺序。
982

被折叠的 条评论
为什么被折叠?



