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
    }

     




免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM