大雀软件园

首页 软件下载 安卓市场 苹果市场 电脑游戏 安卓游戏 文章资讯 驱动下载
技术开发 网页设计 图形图象 数据库 网络媒体 网络安全 站长CLUB 操作系统 媒体动画 安卓相关
当前位置: 首页 -> 技术开发 -> Script -> 用Javascript写的一个映射表(MAP)类

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

时间: 2021-07-31 作者:daque

在安排用户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;}

热门阅览

最新排行

Copyright © 2019-2021 大雀软件园(www.daque.cn) All Rights Reserved.