web-dev-qa-db-fra.com

jeter un œil à la pile en utilisant javascript

Comment puis-je obtenir le premier élément de ma pile ici est mon code

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

Je sais qu'il y a quelque chose comme coup d'oeil en Java. Existe-t-il une méthode similaire dans JS utilisant laquelle je peux obtenir l'élément le plus haut?

19
JustCurious

Pour vérifier l'élément le plus haut, malheureusement, vous devez l'indexer explicitement

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

la syntaxe stack[-1] (qui fonctionnerait en Python) ne fonctionne pas: les index négatifs ne sont valables que comme paramètres pour l'appel de slice.

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

Pour extraire un élément il y a cependant pop:

// Add two top-most elements of the stack
var a = stack.pop();
var b = stack.pop();
stack.Push(a + b);
26
6502
var stack = [];
stack.Push("id1");
stack.Push("id2");
console.log(stack[stack.length-1]); // the top element
console.log(stack.length); //size
2
Sagar V

Si vous n'avez besoin que d'un bord de votre pile (la tête ou la queue n'a pas d'importance), utilisez-la à l'envers, alors:

peek() devenir array[0],
unshift(v) devient Push()
shift() devient pop()

du code:

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

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

ou plus court

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());
1
pery mimon