实现push

push

尾部添加元素 返回新的长度

实现

利用了数组长度length属性和索引的关系来定位尾部要添加的索引

Array.prototype.myPush = function (value) {
      this[this.length] = value
      return this.length
    }
  • 以下是测试用例
let arr = [1, 2, 3, 4]
    console.log(arr.myPush(5), arr); //5 (5) [1, 2, 3, 4, 5]

实现pop

pop

尾部删除元素 返回删除的元素

实现

先利用数组长度length属性 尾部赋值为null

//实现pop 尾部删除元素 返回删除的元素
    Array.prototype.myPop = function () {
      this[this.length - 1] = null
      this.length -= 1
      return this[this.length - 1]
    }

测试用例如下

    console.log(arr.myPop(), arr); //4 (4) [1, 2, 3, 4]

实现unshift

unshift

头部添加元素 返回新长度

实现

通过原数组的元素向后移再给头部元素赋值实现头部添加

 //unshift 头部添加元素 返回新的长度
    Array.prototype.myUnshift = function (value) {
      //向后移
      for (let i = arr.length; i > 0; i--) {
        this[i] = this[i - 1]
      }
      this[0] = value
      return this.length
    }

测试用例如下

 console.log(arr.myUnshift(0), arr);  //5 (5) [0, 1, 2, 3, 4]

实现shift

shift

头部元素删除并且返回元素

实现

通过元素向前移再把长度减一 实现头部元素的删除

 Array.prototype.myShift = function () {
      //向前移
      let a = this[0]
      for (let i = 0; i < this.length - 1; i++) {
        this[i] = this[i + 1]
      }
      this.length -= 1
      return a
    }
Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐