当前位置: 首页 > 工具软件 > JSPOP > 使用案例 >

js基础编程-题目12 push与pop

上官鸿朗
2023-12-01

整理下初学时做过的js基础编程题目和大家分享以下,如果大家觉得有用,别忘了点一下赞哦

push 和 pop

用代码实现一个数组的push方法

首先,我们要了解,push和pop方法都是改变原数组的方法
push:在数组末尾添加成员,返回添加后数组长度
pop:在数组末尾剪切一个成员,返回剪切的值

封装push方法:

Array.prototype.myPush = function(...args){
  for(let i = 0;i<args.length;i++){
    this[this.length] = args[i]
  }
  return this.length
}
  • 用 arguments 封装 push
Array.prototype.myPush = function(){
  for(let i = 0;i<arguments.length;i++){
    this[this.length] = arguments[i]
  }
  return this.length
}

封装pop方法:

Array.prototype.myPop = function(){
  let res = this[this.length-1]
  this.length--
  return res
}

这里扩展下 shift 和 unshift 方法的封装
unshift:在数组开头添加成员,返回添加后数组长度
shift:在数组开头剪切一个成员,返回剪切的值

  • 封装 unshift 方法
    利用splice方法
Array.prototype.myUnshift = function(...args){
  this.splice(0,0,...args)
  return this.length
}

利用自己的出栈进栈

Array.prototype.myUnshift = function(...args){
  function reverse(arr,start,end){
    while(start<end){
    let temp = arr[start]
    arr[start] = arr[end]
    arr[end] = temp
    start ++
    end --
    }
  }
  reverse(this,0,this.length-1)
  for(let i = args.length-1;i>=0;i--){
    this[this.length] = args[i]
  }
  reverse(this,0,this.length-1)
  return this.length
}
  • 封装 shift 方法
    利用splice方法
Array.prototype.myShift = function(){
  return Number(this.splice(0,1) + '')
}

利用自己的出栈进栈

Array.prototype.myShift = function(){
  function reverce (arr,start,end){
    while(start<end){
      let temp = arr[start]
      arr[start] = arr[end]
      arr[end] = temp
      start ++
      end --
    }
  }
  reverce(this,0,this.length-1)
  let res = this[this.length-1]
  this.length --
  reverce(this,0,this.length-1)
  return res
}
  • 这里扩展一下我之前你的小想法
    我之前想着简单封装下面不是更简单
Array.prototype.myPush = function(...args){
  this = [...this,...args]
} 
[].myPush()//SyntaxError: Invalid left-hand side in assignment

这样会触发一个 语法错误(低级错误),系统对这个 this 有保护机制。

 类似资料: