用Javascript写的一个映射表类

原创 2004年05月07日 13:27:00

该类可以通过关键字(key)查找相对应的值(value),关键字的类型可以是String、Number、Boolean类型,值的类型不限,代码如下:

<script>
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

}
</script>

用Javascript写的一个映射表类

用Javascript写的一个映射表类     该类可以通过关键字(key)查找相对应的值(value),关键字的类型可以是String、Number、Boolean类型,值的类型不限,代码如下:fu...
  • SmartJavaer
  • SmartJavaer
  • 2006年10月12日 09:38
  • 589

用Javascript写的一个映射表(MAP)类--续

序:本来是想修改一下上一次写的文章http://dev.csdn.net/Develop/article/27/27499.shtm,可CSDN不知怎么不能修改了,因此,只好重新增加。有必要在这里说明...
  • yjgx007
  • yjgx007
  • 2004年06月07日 09:45
  • 2289

用javascript实现简单计算器

这是一个简单计算器的实现。可以实现简单的加,减,乘,除功能,用户按下“←”按钮,删除当前算术表达式最后一个字符,并更新显示,用户按下“CE”按钮,清除当前算术表达式,如果算术表达式非法,弹出警告框提醒...
  • XHF901
  • XHF901
  • 2016年12月09日 15:49
  • 364

一个用javascript写的hashtable类

function Hashtable(){    this._hash        = new Object();    this.add        = function(key,value){...
  • E_wsq
  • E_wsq
  • 2008年09月26日 11:23
  • 582

用 JavaScript 写一个超小型编译器

前几天看到 Github 上一个非常好的编译器 Demo: thejameskyle/the-super-tiny-compiler: Possibly the smallest compile...
  • hj7jay
  • hj7jay
  • 2016年08月04日 10:52
  • 1386

自己写的String类

1:MyString.h #pragma once class myCString { public: int GetLength()const {return m_nLength;} ...
  • djb100316878
  • djb100316878
  • 2014年12月01日 08:49
  • 1253

一些Java面试题

1. JavaScript语言中的基本类型有哪些? (1)number:包括正数、负数、小数 (2)string (3)boolean:有true或false**住:**JS中的数据类型 (1...
  • u013349237
  • u013349237
  • 2017年05月15日 14:42
  • 209

javascript实现基于类的继承

我们知道javaScript没有“类”的概念,那javascript是不是就不能实现继承了呢?答案是否定的,下面的例子就实现了两个类的继承。 Person 是父类,Student是子类,extend是...
  • han_han_1
  • han_han_1
  • 2015年05月05日 22:56
  • 584

用数组编写一个ArrayList类

粗略的用数组来实现了ArrayList的方法,不够完善之处继续改正~~
  • Z_HaiSome
  • Z_HaiSome
  • 2016年08月24日 16:11
  • 269

javascript简单实现 EventEmitter

本文参考http://www.datchley.name/es6-eventemitter/ 先说说观察者模式吧。因为EventEmitter基于观察者模式。观察者模式EventEmitter实现一...
  • bdss58
  • bdss58
  • 2016年05月21日 23:47
  • 1368
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:用Javascript写的一个映射表类
举报原因:
原因补充:

(最多只允许输入30个字)