使用javascript在堆栈中查看操作

时间:2017-02-28 06:39:48

标签: javascript stack

如何从堆栈中获取第一个元素 这是我的代码

var stack = [];
stack.push(id1);
stack.push(id2);

我知道java中有类似的东西。在JS中是否有任何类似的方法可以获得最顶层的元素?

4 个答案:

答案 0 :(得分:23)

要检查最顶层的元素,不幸的是你必须明确索引它

var top = stack[stack.length-1];

语法stack[-1](在Python中可以使用)不起作用:负索引仅作为slice调用的参数有效。

// The same as stack[stack.length-1], just slower and NOT idiomatic
var top = stack.slice(-1)[0];

提取元素有pop

// Add two top-most elements of the stack
var a = stack.pop();
var b = stack.pop();
stack.push(a + b);

答案 1 :(得分:2)

var stack = [];
stack.push("id1");
stack.push("id2");
console.log(stack[stack.length-1]); // the top element
console.log(stack.length); //size

答案 2 :(得分:0)

如果您只需要堆栈的一个边缘(头或尾),请以相反的方式使用它。
 unshift(v)代替push()
 shift()代替pop(),并且
 peek()只是array[0]

一些代码:

class Stack{
  constructor(... args ){
    this.store = [... args.reverse()];
  }
  push(value){
    return this.store.unshift(value);
  }
  pop(){
   return this.store.shift();
  }
  peek(){
    return this.store[0];
  }
    
}

const stack = new Stack(1,2,3);
stack.push(4);
console.log(stack.peek());
stack.pop();
console.log(stack.peek())

或更短

function Stack(...rest){
  var store = [... rest.reverse() ];
  return {
    push: (v)=> store.unshift(v) ,
    pop: _=> store.shift(),
    peek: _=> store[0]
    }
  }
  
var stack = Stack(1,2,3);
console.log(stack.peek());
stack.push(4);
console.log(stack.peek());
stack.pop(), stack.pop();
console.log(stack.peek());

答案 3 :(得分:-1)

        var stack = [];
        stack.push("id1");
        stack.push("id2");
        var topObj = stack[0]
       console.log(topObj)