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]
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,pop,shift,unshift JavaScrip