处理 SSI 文件时出错
网站工程
 规划发展   网页美工   标记语言   网页编程   Web服务器   广告攻略   开发常识   趋势研究   网站维护   网站数据库   网页设计工具
 论坛
您现在的位置: IT文谷 >> 网站工程 >> 网页编程 >> JavaScript >> 文章正文
用javascript写的一个映射表(MAP)类--续用javascript写的一个映射表(MAP)类--续2006-10-28 7:53:57用javascript写的一个映射表(MAP)类--续2006-10-28 7:53:57用javascript写的一个映射表(MAP)类--续
用javascript写的一个映射表(MAP)类--续
用javascript写的一个映射表(MAP)类--续用javascript写的一个映射表(MAP)类--续2006-10-28 7:53:57用javascript写的一个映射表(MAP)类--续2006-10-28 7:53:57用javascript写的一个映射表(MAP)类--续
处理 SSI 文件时出错
用javascript写的一个映射表(MAP)类--续用javascript写的一个映射表(MAP)类--续2006-10-28 7:53:57用javascript写的一个映射表(MAP)类--续2006-10-28 7:53:57用javascript写的一个映射表(MAP)类--续

序:本来是想修改一下上一次写的文章http://dev.csdn.net/Develop/article/27/27499.shtm,可CSDN不知怎么不能修改了,因此,只好重新增加。

有必要在这里说明一下写这个映射表类的目的,它来自于一个ASP项目开发中的灵感,具体是用户权限的管理和查询:

在设计用户user -> 角色roles时,用","号将用户属于的多个角色ID分开,以判断用户所属的哪些角色。在客户端的界面是两个select下拉框,左边的是人员user,右边的是角色roles,在左边的select中选择一个user,右边应能显示相应的角色,如果采用将用户ID递送至服务端查询并更新右边的用户角色,性能和效率都比较低。因此,如果将user -> roles保存在客户端,具体操作是在初始化页面时,将用户权限表中已查询到的用户和角色保存在映射表中(注意:映射表是在客户端中的,而查询是在服务端),当需要查询某个用户(用户作为关键字key)具有哪些角色(角色作为value)时,就直接映射表中查询(lookup),由于一个用户存在多个角色,所以映射表类也作了相应改动,以前的映射表类中的key关键字是不允许有重复的,现在允许有重复的关键字,相应的查询的返回值会有多个,因而返回值为数组类型。

例如,user_a用户有role_a和role_b两种角色,可以作下面的操作:

map.setAt("user_a", "role_a");

map.setAt("user_a", "role_b");

查询user_a的角色时,用map.lookUp("user_a")方法,这将返回一个数组对象,所有的角色将保存在这个返回的数组中。

修正后的代码如下:// 注意:下面被注释的代码,在上一个版本中存在

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)
{
  var arr = new Array();
  var j = 0;
 
  for (var i = 0; i < this.map.length; i++)
  {
    if ( this.map[i].key === key )
    {
      arr[j++] = this.map[i].value;
      //return this.map[i].value;
    }
  }
 
  return arr;
}

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

最后阐述一点:这只是一方面的应用,你可能会把它应用到其它业务逻辑的实现上,如果有更好的想法请与我联系yjgx@sina.com

用javascript写的一个映射表(MAP)类--续用javascript写的一个映射表(MAP)类--续2006-10-28 7:53:57用javascript写的一个映射表(MAP)类--续2006-10-28 7:53:57用javascript写的一个映射表(MAP)类--续
处理 SSI 文件时出错
  • 上一篇文章:

  • 下一篇文章:
  • 进入论坛讨论

    相关文章
    网站流量统计代码
    一个简单的javascript菜单
    层遇到select框时
    javascript表单之间的数据传递!
    可编辑的 HTML javascript 表格控件 DataGrid II
    让网页自动穿上外套
    在网页中控制wmplayer播放器
    排序Select中Option项的一个示例
    类似ListView ,htc组件
    js控制excel打印完美解决方案
    也谈*.Encode(JScript, VBScript等)的解密
    如何在网页中调试javascript
    热门文章最新推荐

    版权与免责声明:
    ① 本网转载其他媒体稿件是为传播更多的信息,此类稿件不代表本网观点,版权归原作者所有,本网不承担此类稿件侵权行为的连带责任。
    ② 本站原创文章,转载时请注明出自文谷及作者姓名
    ③在本网BBS上发表言论者,文责自负。
    ④如您因版权等问题需要与本网联络,请在30日内联系 。
    用javascript写的一个映射表(MAP)类--续用javascript写的一个映射表(MAP)类--续2006-10-28 7:53:57用javascript写的一个映射表(MAP)类--续2006-10-28 7:53:57用javascript写的一个映射表(MAP)类--续
    用javascript写的一个映射表(MAP)类--续用javascript写的一个映射表(MAP)类--续2006-10-28 7:53:57用javascript写的一个映射表(MAP)类--续2006-10-28 7:53:57用javascript写的一个映射表(MAP)类--续

    全站热点
    最新推荐
    处理 SSI 文件时出错
    处理 SSI 文件时出错