【push,pop,shift,unshift】手写数组push,pop,shift,unshiftt方法

系列文章目录

其它部分在这儿~~~ 持续更新中~~

手写Javascript的API分析


文章目录

  • 系列文章目录
  • 前言
  • 一、push
  • 二、pop
  • 三、shift
  • 四、unshift
  • 总结


前言

操作数组的方法有很多,这里先手写部分 ,主要是push , shift,pop,unshift

从实现看具体的区别

push:将一个或多个元素添加到数组的末尾,并返回该数组的新长度。
pop: 从数组中删除最后一个元素,并返回该元素的值。
shift:从数组中删除第一个元素,并返回该元素的值。
unshift:将一个或多个元素添加到数组的开头。

开始吧~~


一、push

将一个或多个元素添加到数组的末尾,并返回该数组的新长度。
这个很简单,拿到传入参数放到数组最后,再返回数组长度即可。

代码如下(示例):

    // 实现一个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

从数组中删除最后一个元素,并返回该元素的值。此方法会更改数组的长度。

代码如下(示例):

// 实现一个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

从数组中删除第一个元素,并返回该元素的值。此方法更改数组的长度。

代码如下(示例):

// 实现一个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

将一个或多个元素添加到数组的开头,并返回该数组的新长度。

代码如下(示例):

 // 实现一个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是返回的被删除的元素。

以上,点个赞吧~~~

你可能感兴趣的:(javascript,前端,学习,青少年编程)