spacer
Yehuda Shiran March 22, 2000
The Stack Array
Tips: March 2000

Yehuda Shiran, Ph.D.
Doc JavaScript

Developer News
News Flash: Adobe Has iPhone Workaround
Adobe's Flash 10.1 Goes Mobile (Minus iPhone)
A Salute to Visionary CEOs

The Stack is a known abstract type in computer science. No matter how you implement the Stack, it always supports the basic operations of push and pop. The push operation adds elements to the top of the stack. Here is the method to be declared as a prototype of the Array object type:

function push() {
  var sub = this.length;
  for (var i = 0; i < push.arguments.length; ++i) {
    this[sub] = push.arguments[i];
	sub++;
  }
}

The first line of the function sets the position of the new element. The length of the array is this.length. Since the first element of the array is at position 0, the last element of the array is at position length-1 and thus the new element will be at position length. The number of the elements to be added is the number of arguments the the function push() is being called with, push.arguments.length. In the loop that iterates over the new elements, we set each new element at the top of the array and then increment the index of of the top:

this[sub] = push.arguments[i];
sub++;

When the browser is a pre-5.5 version, we need to extend the Array's prototype with the new push() method:

if (bName() == 1 && bVer() >= 5.5)
else {
  Array.prototype.push = push;
}

We do nothing when the browser is IE 5.5 or higher. For other browsers or lower versions, we assign the home-brewed push() method. Let's take an example that shows the usage of the push() method:

var names = new Array("Tom", "Mark", "Bart", "John");
names.push("Jim", "Richard", "Tim");
alert(names);

The pop() method returns the stack's top element. Here is our implementation of the function:

function pop() {
  var lastElement = this[this.length - 1];
  this.length--;
  return lastElement;
}

The first line sets the last element of the array, situated at index this.length-1. The second line decrements the size of the array, this.length. When the browser is a pre-5.5 version, we need to extend the Array's prototype with the new pop() method:

if (bName() == 1 && bVer() >= 5.5)
else {
  Array.prototype.pop = pop;
}

We do nothing when the browser is IE 5.5 or higher. For other browsers or lower versions, we assign the home-brewed pop() method. Let's take an example:

var names = new Array("Tom", "Mark", "Bart", "Jonn");
var last = names.pop();
alert("Last = " + last + "  Other = " + names);

See live demo on the IE 5.5 in Column 57, The Doc Dialer.


People who read this tip also read these tips:

Look for similar tips by subject:

internet.commediabistro.comJusttechjobs.comGraphics.com

Search:

WebMediaBrands Corporate Info

Legal Notices, Licensing, Reprints, Permissions, Privacy Policy.
Advertise | Newsletters | Shopping | E-mail Offers | Freelance Jobs

webref The latest from WebReference.com Browse >
Building a Banking Application Home Page with OOP · Mixing Scripting Languages · Review: phpFox, a Social Networking CMS with all the Bells and Whistles
Sitemap · Experts · Tools · Services · Email a Colleague · Contact FREE Newsletters 
 The latest from internet.com
Enterprise 2.0: Social Networking in the Cloud · BroadSoft Marketplace Hastens Pace of Telephony Innovation · Review: HTC Hero for Sprint