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

系列文章目录

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

手写Javascript的API分析



前言

操作数组的方法有很多,这里先手写部分 ,主要是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是返回的被删除的元素。

以上,点个赞吧~~~

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值