標籤:一個 for == 部分 isp name ide pre 關係
字典時一個很有用的工具,在之前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上面找到一個寫的比較全的,網址如下:http://www.cnblogs.com/baiyangyuanzi/p/6689554.html,在他的基礎上,我做了稍許修改,提取了我需要的部分
代碼如下:
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對應的網站,字典完成
Javascript 字典應用執行個體