zoukankan      html  css  js  c++  java
  • JavaScript数组方法--pop、shift、unshift

    其实还有一个方法push,应该放在一起说的,问题是他跟concat跑了,那只剩下这哥仨了。

    • pop:pop()方法从数组中删除最后一个元素,并返回该元素的值。此方法更改数组的长度。
      捎带一下push,push是在数组当中最后存入参数当中传递过来的元素,而pop恰好相反,删除数组当中最后一个元素。
      似乎没什么好说的,而且方法本身,也不需要任何参数,其返回值是从数组中删除的元素(当数组为空时返回undefined)。
      需要注意的是他会改变元素长度。好吧,我们开始重构吧!
      function pop (arr) {
        if (!(arr instanceof Array)) throw new Error("请确保参数类型为数组")
        var el;
        if (arr.length > 0) {
          el = arr[arr.length - 1]
          arr.length = arr.length - 1
        }
        return el
      }
    • shift:shift() 方法从数组中删除第一个元素,并返回该元素的值。此方法更改数组的长度。
      shift真可以算作pop的兄弟方法了,pop删除的是最后一个元素,而shift删除的是第一个元素。其他所有要求和用法都完全一致的。使用shift时也不需要任何参数,而其返回值是从数组中删除的元素(当数组为空时返回undefined)。只不过该值是数组当中的第一个。
      还是直接上重构的代码吧!
      function shift (arr) {
        if (!(arr instanceof Array)) throw new Error("请确保参数类型为数组")
        var el;
        if (arr.length > 0) {
          el = arr[0]
          for (var i = 0; i < arr.length - 1; i++) {
            arr[i] = arr[i + 1]
          }
          arr.length = arr.length - 1
        }
        return el
      }

      与pop非常类似,多做的一步是,删除了第一个元素之后,需要把后面的所有元素前移,然后再将数组长度减小。
      既然第一个元素可以被删除,那么肯定也可以添加元素到第一位。

    • unshift:unshift() 方法将一个或多个元素添加到数组的开头,并返回该数组的新长度。
      看定义,是不是跟push很像,只不过他是添加到元素开头。
      既然添加元素,那么参数就必不可少了。
      arr.unshift(element1, ..., elementN)

      注意他修改的数组本身,而返回值是数组长度。有push方法在前,unshift就好理解的多了。
      直接重构吧!

      function unshift (arr) {
        if (!(arr instanceof Array)) throw new Error("请确保第一个参数类型为数组")
        let i = arguments.length - 1
        while (i) {
          for (var j = arr.length; j > 0; j--) {
            arr[j] = arr[j - 1]
          }
          arr[0] = arguments[i--]
        }
        return arr.length
      }



  • 相关阅读:
    ASP.NET Core 一步步搭建个人网站(6)_单页模式和优化
    ASP.NET Core 一步步搭建个人网站(5)_Api模拟和网站分析
    ASP.NET Core 一步步搭建个人网站(4)_主页和登录验证
    ASP.NET Core 一步步搭建个人网站(3)_菜单管理
    ASP.NET Core 一步步搭建个人网站(2)_一键部署和用户注册登录
    ASP.NET Core 一步步搭建个人网站(1)_环境搭建
    实战_Spring_Cloud
    搭建个人OpenAPI
    MyCat | 分库分表实践
    算法题丨Next Permutation
  • 原文地址:https://www.cnblogs.com/zhuhuoxingguang/p/10636346.html
Copyright © 2011-2022 走看看