function struct(key, value){


  this.key = key;

  this.value = value;


}


function setAt(key, value){

 

  for (var i = 0; i < this.map.length; i++)

  {

    if ( this.map[i].key === key )

    {

      this.map[i].value = value;

      return;

    }

  }

 

  this.map[this.map.length] = new struct(key, value);


}


function lookUp(key)

{

  for (var i = 0; i < this.map.length; i++)

  {

    if ( this.map[i].key === key )

    {

      return this.map[i].value;

    }

  }

 

  return null;

}


function removeKey(key)

{

  var v;

  for (var i = 0; i < this.map.length; i++)

  {

    v = this.map.pop();

    if ( v.key === key )

      continue;

     

    this.map.unshift(v);

  }

}


function getCount(){

  return this.map.length;

}


function isEmpty(){

  return this.map.length <= 0;

}


function classMap() {


  this.map = new Array();


  this.lookUp = lookUp;

  this.setAt = setAt;

  this.removeKey = removeKey;

  this.getCount = getCount;

  this.isEmpty = isEmpty;

}


window.onload = function(){


  var map = new classMap();


  alert("is the map empty? " + map.isEmpty());

 

  // string to array

  map.setAt("sw1", new Array("sw1_1"));

  map.setAt("sw2", new Array("sw2_1", "sw2_2"));

  map.setAt("sw3", new Array("sw3_1", "sw3_2", "sw3_3"));

  alert(map.lookUp("sw5")); // null

  alert(map.lookUp("sw2")); // "sw2_1, sw2_2"

 

  alert(map.getCount()); // 3

 

  // number to string

  map.setAt(1, "sw1");

  map.setAt(2, "sw2");

  alert(map.lookUp(2)); // "sw2"

  map.setAt(2, new Array("sw2_1", "sw2_2"));

  alert(map.lookUp(2)); // "sw2_1, sw2_2"

 

  alert(map.getCount()); // 5

 

  // string to number

  map.setAt("1", 1);

  map.setAt("2", 2);

  alert(map.lookUp("1")); // 1

  alert(map.lookUp(1)); // "sw1"

  map.setAt("sw3", 33);

  alert(map.lookUp("sw3")); // 33

 

  alert(map.getCount()); // 7

 

  // number to number

  map.setAt(1, 11);

  map.setAt(2, 22);

  alert(map.lookUp(1)); // 11

 

  alert(map.getCount()); // 7

 

  map.removeKey(1);

  alert(map.lookUp(1)); // null

 

  alert(map.getCount()); // 6

 

  // boolean to array

  map.setAt(false, new Array("false", "true"));

  alert(map.lookUp(false));

 

  alert(map.getCount()); // 7


}

狼翔月影 發表在 痞客邦 PIXNET 留言(0) 人氣()