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

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

在常量初始化的时候,没有类似后台语言的键值对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]]来取出。

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

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值