字典时一个很有用的工具,在之前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上面找到一个写的比较全的,在他的基础上,我做了稍许修改,提取了我需要的部分

代码如下:

     function Dictionary() {
this.datastore = new Array();
this.add = function (key, value) {
this.datastore[key] = value;
}
this.find = function (key) {
return this.datastore[key];
}
}

然后实例化Dictionary类

 var adddevide = new  Dictionary();

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

 //设备编号字典
function dictionarydevice(list) {
var length = list.length;
//存贮设备ID
var ID = "";
//存储设备名称
var Name = ""; var i = 0;
var ii = 0;
var iii = 0; for( i = 0;i<length;i++){
ID = list[i].szAreaID;
Name = list[i].szAreaName;
adddevide.add(ID,Name);
if(list[i].lsSites.length === 0){
break;
}
else{
for( ii = 0;ii<list[i].lsSites.length;ii++){
ID = list[i].lsSites[ii].szSiteID;
Name = list[i].lsSites[ii].szSiteName;
adddevide.add(ID,Name);
if(list[i].lsSites[ii].lsDevices.length === 0){
break;
}
else{
for( iii = 0;iii<list[i].lsSites[ii].lsDevices.length;iii++) {
ID = list[i].lsSites[ii].lsDevices[iii].szDeviceID;
Name = list[i].lsSites[ii].lsDevices[iii].szDeviceName;
adddevide.add(ID, Name);
}
}
}
}
} alert(adddevide.find("JS0101"));
}

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

Javascript 字典应用实例的更多相关文章

  1. Google Map JavaScript API V3 实例大全

    Google Map JavaScript API V3 实例大全 基础知识 简单的例子 地理位置 语言 位置 坐标 简单的投影 事件 简单事件 关闭事件 多次添加事件 事件属性 控制 php禁用ui ...

  2. javascript字典数据结构Dictionary实现

    <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head runat=&qu ...

  3. JavaScript 字典

    JavaScript 字典 字典以 key value 形式出现 使用: a = {'k1':'v1,''k2':'v2'} 获取值: a['k1'] 获取值:v1

  4. javaScript 面向对象开发实例

    javaScript 面向对象开发实例 这个是结合require的模块化开发,首先创建构造函数: //test.js 1 function Test(lists) { var config={ nam ...

  5. javascript 字典类型的使用

    javascript  字典类型的使用 1.使用Array: var arr = new Array(); arr["zs"] = "zhangsan"; ar ...

  6. JavaScript 字典(Dictionary)

    TypeScript方式实现源码 //  set(key,value):向字典中添加新元素. //  remove(key):通过使用键值来从字典中移除键值对应的数据值. //  has(key ...

  7. 关于Javascript中通过实例对象修改原型对象属性值的问题

    Javascript中的数据值有两大类:基本类型的数据值和引用类型的数据值. 基本类型的数据值有5种:null.undefined.number.boolean和string. 引用类型的数据值往大的 ...

  8. JavaScript模板引擎实例应用

    在之前的一篇名为<移动端基于HTML模板和JSON数据的JavaScript交互>的文章中,我向大家说明了为什么要使用JavaScript模板以及如何使用,文末还提到了laytpl.art ...

  9. JavaScript学习笔记-实例详解-类(一)

    实例详解-类(一): //每个javascript函数(除了bind())都自动拥有一个prototype对象// 在未添加属性或重写prototype对象之前,它只包含唯一一个不可枚举属性const ...

随机推荐

  1. ERP实施顾问--理解客户的解决方案与实际需求

    在企业进行信息化时实施方的顾问都会来现场进行"需求调研",再根据"调研"的结果进行双方确认,确认后按此蓝本进行开发实施. 一切看上去都很美好,需求明确.开发顺利 ...

  2. 最短路(SPFA)

    SPFA是Bellman-Ford算法的一种队列实现,减少了不必要的冗余计算. 主要思想是: 初始时将起点加入队列.每次从队列中取出一个元素,并对所有与它相邻的点进行修改,若某个相邻的点修改成功,则将 ...

  3. eclipse与hadoop-eclipse-plugin之间的版本对应关系

    eclipse与hadoop-eclipse-plugin之间,版本互相不兼容,或者说,版本要求严格. 把hadoop-eclipse-plugin复制到eclipse的plugins目录下以后,如果 ...

  4. Codeforces 1062 - A/B/C/D/E - (Undone)

    链接:http://codeforces.com/contest/1062 A - Prank - [二分] 题意: 给出长度为 $n(1 \le n \le 100)$ 的数组 $a[1 \sim ...

  5. Linux是cat、tail、head查看文件任意几行的数据

    Linux是cat.tail.head查看文件任意几行的数据 一.使用cat.tail.head组合 1.查看最后100行的数据 cat filename | tail -n 100 2.查看100到 ...

  6. 018-并发编程-java.util.concurrent.locks之-ReentrantReadWriteLock可重入读写锁

    一.概述 ReentrantLock是一个排他锁,同一时间只允许一个线程访问,而ReentrantReadWriteLock允许多个读线程同时访问,但不允许写线程和读线程.写线程和写线程同时访问.相对 ...

  7. vue 环境报错 chromedriver@2.44.1 install: `node install.js`

    解决办法: 1. yarn add chromedriver -g 2.yarn add chromedriver --chromedriver_cdnurl=http://cdn.npm.taoba ...

  8. 理解Deadlock

    问:为啥以下代码会产生死锁 public class Deadlock { static class Friend { private final String name; public Friend ...

  9. iOS开发笔记错误集

    错误类型列举 错误类型A:EXC_BAD_INSTRUCTION (code=EXC_I386_INVOP, subcode=0x0) 错误类型B:EXC_BREAKPOINT (code=EXC_A ...

  10. 6种原型设计工具大比对! Axure,Invision, 墨刀……哪款适合你?

    每一年的毕业季都是找工作高峰时期,产品经理.UI设计师这些岗位都会接触到原型设计工具.选择原型设计工具最重要的一点:适合自己的才是最好的! 下文将对目前超火的原型工具进行大对比,快来看看那一款于你而言 ...