最近在写前端,哈哈哈哈,然后遇到一个问题。
在常量初始化的时候,没有类似后台语言的键值对Map,然后百度一下,看一写文档,来自定义一个。
首先是用到js的面向对象思想,底层还是使用js的Array类。
/**
* 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类,然后进行添加数据。例如,按照不同时间维度进行查询一定时间的数据
var time = new Dictionary();
time.add("D","天");
time.add("M","月");
time.add("Q","年");
time.add("Y","年");
定义完之后,我们需要将这些数据取出,得到一个这样的下拉框
<select class="time">
<option value='D'>天</option>
<option value='M'>月</option>
<option value='Q'>季</option>
<option value='Y'>年</option>
</select>
再一步,就是需要循环取出
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]]来取出。
好了这样就可以得到我们的下拉框啦。