JavaScript 实现 Map key-value 映射表

本文介绍了一个简单的自制JavaScript Map类实现,包括查找、设置和删除等基本操作。通过具体示例展示了如何使用该类来存储和检索键值对。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

JavaScript的实现的Map,用着挺方便的,不知道性能怎么样。

自己用只有不超过10个元素,所以性能无所谓了。

/********************jsmap.js**************************/

/////// map 类

function classMap() {

  this.map = new Array();
 
  var struct = function(key, value){
      this.key = key;
   this.value = value;
 };
 
  this.lookUp = function (key){
   for (var i = 0; i < this.map.length; i++)
   {
  if ( this.map[i].key === key )
  {
    return this.map[i].value;
  }
   }  
   return null;
 };
 
  this.setAt = function (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); 
 };
 
  this.removeKey = 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);
   }
 };
 
  this.getCount = function(){
   return this.map.length;
 };
 
  this.isEmpty = function(){
   return this.map.length <= 0;
 };
}
////////////////////////////////////////////////////////////////////////////////////////////////

/********************调用***********************/

window.onload = function(){

  var map = new classMap();
  alert("is the map empty? " + map.isEmpty());
  // string to array
  map.setAt("sw1", "aaaaa");
  map.setAt("sw2", "bbbbb");
  map.setAt("sw3", "ccccc");
  alert(map.lookUp("sw1"));
  alert(map.lookUp("sw2"));
  alert(map.lookUp("sw3"));
  alert(map.getCount());
 
}

/////////////////////////////////////////////////////////////////////////////////

/*************************************************maptest.html********************************************/

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>无标题文档</title>
</head>

<body>
<script>

function classMap() {
  this.map = new Array();
 
  var struct = function(key, value){
      this.key = key;
   this.value = value;
 };
 
  this.lookUp = function (key){
   for (var i = 0; i < this.map.length; i++)
   {
  if ( this.map[i].key === key )
  {
    return this.map[i].value;
  }
   }  
   return null;
 };
 
  this.setAt = function (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); 
 };
 
  this.removeKey = 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);
   }
 };
 
  this.getCount = function(){
   return this.map.length;
 };
 
  this.isEmpty = function(){
   return this.map.length <= 0;
 };
}

window.onload = function(){

  var map = new classMap();
  alert("is the map empty? " + map.isEmpty());
  // string to array
  map.setAt("sw1", "aaaaa");
  map.setAt("sw2", "bbbbb");
  map.setAt("sw3", "ccccc");
  alert(map.lookUp("sw1"));
  alert(map.lookUp("sw2"));
  alert(map.lookUp("sw3"));
  alert(map.getCount());
 
}
</script>
</body>
</html>

/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值