js 类数组有push pop方法吗

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了js 类数组有push pop方法吗相关的知识,希望对你有一定的参考价值。

有的,可以对js中的数组以栈的形式进行增删。

1、push()、pop()和unshift()、shift()

这两组同为对数组的操作,并且会改变数组的本身的长度及内容。

不同的是 push()pop() 是从数组的尾部进行增减,unshift()、shift() 是从数组的头部进行增减。

var arr = [1, 2];

2、push()和unshift()

向数组的 尾部/头部 添加若干元素,并返回 数组的 新长度;

arr.push(3,4);         //返回 arr 的新长度 4

arr ;                        // arr = [1,2,3,4];

arr.unshift(0,0.5);    // 返回 arr 的新长度 6

arr ;                       // arr = [0,0.5,1,2,3,4];

3、pop()和shift()

从数组的 尾部/头部 删除1个元素(删且只删除1个),并返回 被删除的元素;空数组是继续删除,不报错,但返回undefined;

arr.pop();      //返回 4;

arr ;          // arr = [0,0.5,1,2,3];

arr.pop();      //返回 3;

arr ;         // arr = [0,0.5,1,2];

arr.shift();      // 返回 0 ;

arr ;        // arr = [0.5,1,2]


黑马程序员php是国内最早开设的真正人工智能课程。课程全面系统,紧跟时代潮流。

参考技术A 可以自己试试呀!我试是不能的,但是你可以把类数组对象转换为数组

js 实现栈和队列

js实现栈或者队列有两种方式:

1.数组:数组本身提供栈方法(push,pop),队列方法(push,shift)。

代码实现(栈):

/*=======栈结构=======*/
var stack=function(){
    this.data=[]

    this.push=push
    this.pop=pop

    this.clear=clear
    this.length=length
}
var push=function(element){
    this.data.push(element)
}
var pop=function(){
    this.data.pop()
}
var clear=function(){
    this.data.length=0
}
var length=function(){
    return this.data.length;
}
//测试
var s=new stack()
s.push(‘first‘)
s.push(‘second‘)
console.log(s)
s.pop()
console.log(s)
// s.clear()
console.log(s)

代码实现(队列):

/*=======队列结构=======*/
var queue=function(){
    this.data=[]

    this.enQueue=enQueue
    this.deQueue=deQueue

    this.clear=clear
    this.length=length
}
var enQueue=function(element){
    this.data.push(element)
}
var deQueue=function(){
    this.data.shift()
}
var clear=function(){
    this.data.length=0
}
var length=function(){
    return this.data.length;
}
//测试
var q=new queue()
q.enQueue(‘first‘)
q.enQueue(‘second‘)
console.log(q)
q.deQueue()
console.log(q)
q.clear()
console.log(q)

 

2.链表:构造链表结构,说白了就是链表的插入(尾插),移除(栈:末尾节点移除,队列:头结点移除)

代码实现(栈):

/*=====栈结构========*/
var node=function(data){
    this.data=data
    this.next=null
}
var stack=function(){
    this.top=new node("top")

    this.push=push
    this.pop=pop

    this.clear=clear
    this.length=length
}

/*=======入栈=======*/
var push=function(data){
    let newNode=new node(data)
    newNode.next=this.top
    this.top=newNode
}
/*=======出栈=======*/
var pop=function(){
    let curr=this.top
    this.top=this.top.next
    curr.next=null
}
/*=======清空栈=======*/
var clear=function(){
    this.top=new node(‘top‘)
}
/*=======栈长度=======*/
var length=function(){
    let cnt=0
    while(this.top.data!==‘top‘){
        this.top=this.top.next
        cnt++
    }
    return cnt

}
/*=======测试=======*/
var s=new stack()
s.push(‘first‘)
s.push(‘second‘)
console.log(s)
s.pop()
console.log(s)
// s.clear()
console.log(s.length())

代码实现(队列):

/*=====队列结构========*/
var node=function(data){
    this.data=data
    this.next=null
}
var queue=function(){
    this.top=new node("top")

    this.enQueue=enQueue
    this.deQueue=deQueue
}

/*=======入队=======*/
var enQueue=function(data){
    let newNode=new node(data)
    newNode.next=this.top
    this.top=newNode
}
/*=======出队=======*/
var deQueue=function(){
    let curr=this.top
    while(curr.next.next!==null && curr.next.next.data!==‘top‘){
        curr=curr.next
    }
    if(curr.next.next.data===‘top‘){
        curr.next=curr.next.next
    }
}

/*=======测试=======*/
var q=new queue()
q.enQueue(‘first‘)
q.enQueue(‘second‘)
console.log(q)
q.deQueue()
console.log(q)

 

以上是关于js 类数组有push pop方法吗的主要内容,如果未能解决你的问题,请参考以下文章

js数组的push操作会返回一个最新的数组

js 的数组怎么push一个对象. Js数组的操作push,pop,shift,unshift JavaScrip

原生JS数组方法实现(一)————push()unshift()pop()和shift()

JS数组pop/push,shift/unshift方法

JS 精粹(方法)

关于js中伪数组