• 【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;
        }
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15

    上面代码可以看出,原数组是被改变了的,返回了一个数组长度

    二、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
        }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    上面代码可以看出,原数组是被改变了,返回的数组被删除的元素

    三、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
        }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15

    上面代码可以看出,原数组是被改变了的,返回被删除的元素

    四、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
        }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16

    总结

    push , pop , shfit , unshift都是会改变原数组的, push和unshift返回的是新数组的长度,pop和shift是返回的被删除的元素。

    以上,点个赞吧~~~

  • 相关阅读:
    Rancher 系列文章-在腾讯云的 K3S 上安装高可用 Rancher 集群
    数据库表数据类型datetime 和 timestamp区别,以及优缺点
    神经网络(九)无监督学习
    【服务器使用】vscode & winscp进行服务器容器连接(含修改初始密码)
    JavaWeb、其他技术
    Scala---数据基础
    Jmeter+jenkins接口性能测试平台实践整理
    java 业务幂等解决方案
    Spark 环境安装与案例演示
    java计算时间差 (日时分秒)
  • 原文地址:https://blog.csdn.net/xh1506101064/article/details/127703793