IE 5.5: Formatting, URIs, and Stack Operations : LIFO Operations | WebReference

IE 5.5: Formatting, URIs, and Stack Operations : LIFO Operations


IE 5.5: Formatting, URIs, and Stack Operations

LIFO Operations

Internet Explorer 5.5 provides four new methods for the Array object: pop(), push(), shift(), and unshift(). For those of you surfing with pre-5.5 versions of Internet Explorer, we also provide our own implementation of these four methods.

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);

You can find the code itself in a later page of this column. Go ahead and run this script now. You should get a window like this:

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);

You can find the code itself in a later page of this column. Go ahead and run this script now. You should get the following window:

Next: How to shift and unshift array elements

http://www.internet.com

Produced by Yehuda Shiran and Tomer Shiran

Created: March 14, 2000
Revised: April 26, 2000

URL: http://www.webreference.com/js/column59/4.html