其它部分在这儿~~~ 持续更新中~~
操作数组的方法有很多,这里先手写部分 ,主要是push , shift,pop,unshift
从实现看具体的区别
push:将一个或多个元素添加到数组的末尾,并返回该数组的新长度。
pop: 从数组中删除最后一个元素,并返回该元素的值。
shift:从数组中删除第一个元素,并返回该元素的值。
unshift:将一个或多个元素添加到数组的开头。
开始吧~~
将一个或多个元素添加到数组的末尾,并返回该数组的新长度。
这个很简单,拿到传入参数放到数组最后,再返回数组长度即可。
代码如下(示例):
// 实现一个push 向数组最后添加元素
Array.prototype.myPush = function(){
// 判断要添加的数组是否存在
if(this == undefined){
throw new TypeError (this + 'is not defined')
}
console.log(arguments.length, typeof this, Array.isArray(this))
let len = this.length
// 将arguments循环添加进去
for(let i = 0; i < arguments.length; i++){
this[len + i] = arguments[i]
}
return this.length;
}
上面代码可以看出,原数组是被改变了的,返回了一个数组长度
从数组中删除最后一个元素,并返回该元素的值。此方法会更改数组的长度。
代码如下(示例):
// 实现一个pop 从数组中删除最后一个元素
Array.prototype.myPop = function(){
if(this.length == 0){
return undefined
}
let returnArg = this.length
const item = this[length-1]
this.length -=1
return returnArg
}
上面代码可以看出,原数组是被改变了,返回的数组被删除的元素
从数组中删除第一个元素,并返回该元素的值。此方法更改数组的长度。
代码如下(示例):
// 实现一个shift 从数组中删除第一个元素,并返回该元素的值。
Array.prototype.myShift = function(){
if(this.length == 0){
return undefined
}
const item = this[0]
let _this = this
// 向前移动一位
for(let i = 0; i < _this.length ;i++){
this[i] = _this[i+1] ? _this[i+1] : ""
}
// 删除末尾元素
this.length -=1
return item
}
上面代码可以看出,原数组是被改变了的,返回被删除的元素
将一个或多个元素添加到数组的开头,并返回该数组的新长度。
代码如下(示例):
// 实现一个unshift, 将一个或者多个元素添加到数组的开头,并返回该数组的新长度
Array.prototype.myUnshift = function(){
if(this.length == 0){
return undefined
}
let length = this.length + arguments.length - 1
// 将原数组整体向后移动arguments.length位,从最后一位开始移动
for(let i = this.length - 1; i >= 0; i--){
this[length] = this[i]
}
for(let i = 0; i < arguments.length; i++){
this[i] = arguments[i]
}
return this.length
}
push , pop , shfit , unshift都是会改变原数组的, push和unshift返回的是新数组的长度,pop和shift是返回的被删除的元素。
以上,点个赞吧~~~