js源码-数组中的push()和unshift()方法的源码实现
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
js源码-数组中的push()和unshift()⽅法的源码实现⼈话不多,直接上代码,在代码中解析,不⾜之处请谅解:
push()
Array.prototype._push=function(...value){//在Array原型链上添加_push⽅法
for(var i=0;i<arguments.length;i++){//按索引从⼩到⼤循环数组
this[this.length]=arguments[i];//把⼊参,按照顺序,依次添加在数组的索引最⼤值加⼀的位置
}
}
var arr=[231];//例⼦
arr._push(1,2,3,4);//调⽤原型链上的_push⽅法
console.log(arr);//结果:[231,1,2,3,4]
unshift()
Array.prototype._unshift=function(...value){ //在原型链上新增⼀个_unshift⽅法
// this.length+arguments.length-1:数组的最新的最⼤索引值
// 数组原有的元素需要整体完后挪动的最⼤临界索引值
for(var i=this.length+arguments.length-1;i>arguments.length-1;i--){
this[i]=this[i-arguments.length]; //此处把原有元素赋值给该元素在数组中新的索引地⽅
// 第⼀个for循环就是把原有的元素往后挪,为参说挪出刚刚好的位置索引值
}
for(var k=0;k<arguments.length;k++){//⼊参只需要正常for循环
this[k]=arguments[k];//数组从0开始往上按顺序添加⼊参元素
// 第⼆个for循环其实就是把⼊参,按顺序在数组头部插⼊
}
return this.length;//最终返回新数组的长度
}
var item1=[2,3,4];//例⼦
let currentLength=item1._unshift(1,2222,22222,99999);//⾃定义插⼊参数
console.log(item1,currentLength);//打印结果:[1, 2222, 22222, 99999, 2, 3, 4] 7
由于时间⽂,本次就分享两个⽅法,后续会陆续推出更多源码案例以及实现;。