如何从堆栈中获取第一个元素 这是我的代码
var stack = [];
stack.push(id1);
stack.push(id2);
我知道java中有类似的东西。在JS中是否有任何类似的方法可以获得最顶层的元素?
答案 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)