您的位置:首页 > 理论基础 > 数据结构算法

js的数据结构------字典(Dictionary)键值对格式

2018-12-14 14:58 1561 查看

最近在写前端,哈哈哈哈,然后遇到一个问题。

在常量初始化的时候,没有类似后台语言的键值对Map,然后百度一下,看一写文档,来自定义一个。

首先是用到js的面向对象思想,底层还是使用js的Array类。

4000

[code]/**
* Created by limeng on 2018/12/14.
*/

function Dictionary(){
this.dataSource = [];
this.add = add;
this.remove = remove;
}

function add( key , value ){
this.dataSource[key] = value;

}

function remove( key ){
if( this.dataSource[key] )
delete this.dataSource[key];
else
return undefined;
}

在你需要的地方,那我们就需要new Dictionary类,然后进行添加数据。例如,按照不同时间维度进行查询一定时间的数据

[code]
var time = new Dictionary();
time.add("D","天");
time.add("M","月");
time.add("Q","年");
time.add("Y","年");

定义完之后,我们需要将这些数据取出,得到一个这样的下拉框

[code]<select class="time">
<option  value='D'>天</option>
<option  value='M'>月</option>
<option  value='Q'>季</option>
<option  value='Y'>年</option>
</select>

再一步,就是需要循环取出

[code]function initTime() {
console.log(time.dataSource);
var allTime = Object.keys(time.dataSource).sort();
for( var key in AllTime){
$(".time").append("<option  value='"+allTime[key]+"'>"+time.dataSource[allTime[key]]+"</option>")
}
}

其中循环取出的时候我们用到了一个js函数,Objective.keys,它的官方解释为

参考网址:https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Object/keys

为了方便理解,用一下F12调试,看一下它代表什么。

在监控表达式中我们可以看到,其中allTime是一个字符串数组,它放着我们的字典键值key 代表就是 数组下标[0,1,2,3],所以在取出我们time的Value值的时候 ,就需要 time.dataSource[allTime[key]]来取出。

好了这样就可以得到我们的下拉框啦。

 

 

阅读更多
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: