Javascript 字典应用实例

字典时一个很有用的工具,在之前C#项目中有经常使用,这篇博文主要讲解在Javascript中,字典的实际应用场景

首先在JS中,是没有Dictionary‘类的,我们需要实现键值(KEY) -- 数值(VALUE)的对应关系,最好的办法就是用数组

首先交代下背景,我需要根据数组里的站点编号,获取到对应的站点名称

首先通过Thrift接口,获取到数据库里面的设备信息,通过Ajax传输到js页面,遍历数组

PS : 数据结构如下:

# 设备信息  struct Device{int id,# string name,.....};

# 站点信息  struct Site{int id,# string name,.....,list<Device> lsDevices};

# 区域信息  struct Area{int id,# string name,.....,list<Site> lsSites};

首先获取到区域信息,然后根据list<Site> lsSites的length判断有无站点,如果有,获取信息,以此类推

我在CSDN上面找到一个写的比较全的,在他的基础上,我做了稍许修改,提取了我需要的部分

代码如下:

1     function Dictionary() {
2         this.datastore = new Array();
3         this.add = function (key, value) {
4             this.datastore[key] = value;
5         }
6         this.find =  function (key) {
7             return this.datastore[key];
8         }
9     }
View Code

然后实例化Dictionary类

 var adddevide = new  Dictionary();

开始遍历数组,传值,代码如下:

 1 //设备编号字典
 2     function  dictionarydevice(list) {
 3         var length = list.length;
 4         //存贮设备ID
 5         var ID = "";
 6         //存储设备名称
 7         var Name = "";
 8 
 9         var i = 0;
10         var ii = 0;
11         var iii = 0;
12 
13         for( i = 0;i<length;i++){
14             ID =  list[i].szAreaID;
15             Name =  list[i].szAreaName;
16             adddevide.add(ID,Name);
17             if(list[i].lsSites.length === 0){
18                break;
19             }
20             else{
21                 for( ii = 0;ii<list[i].lsSites.length;ii++){
22                     ID =  list[i].lsSites[ii].szSiteID;
23                     Name =  list[i].lsSites[ii].szSiteName;
24                     adddevide.add(ID,Name);
25                     if(list[i].lsSites[ii].lsDevices.length === 0){
26                         break;
27                     }
28                     else{
29                         for( iii = 0;iii<list[i].lsSites[ii].lsDevices.length;iii++) {
30                             ID = list[i].lsSites[ii].lsDevices[iii].szDeviceID;
31                             Name = list[i].lsSites[ii].lsDevices[iii].szDeviceName;
32                             adddevide.add(ID, Name);
33                         }
34                     }
35                 }
36             }
37         }
38 
39         alert(adddevide.find("JS0101"));
40     }
View Code

运行程序,出现JS0101对应的站点,字典完成

posted @ 2017-08-15 13:32  StephenCurry  阅读(467)  评论(0编辑  收藏  举报