• 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对应的站点,字典完成

  • 相关阅读:
    基于vue-cli快速构建
    '无法将“vue”项识别为 cmdlet、函数、脚本文件或可运行程序的名称' 或 'vue不是内部或外部命令' 的解决方法
    js / ajax 成功提交后怎么跳转到另外一个页面?
    SpringMVC 拦截器不拦截静态资源的三种处理方式方法
    各种JSON的maven引用
    java版微信公众号支付(H5调微信内置API)
    阿里云MongoDB存储数据
    阿里RocketMq(TCP模式)
    Nginx 简单安装
    Redis-主从复制
  • 原文地址:https://www.cnblogs.com/Liu30/p/7170020.html
Copyright © 2020-2023  润新知