【JS】前端自定义有序map

【JS】前端自定义有序map


function Map() {

this.keys = new Array();
this.values = new Array();

//添加键值对
this.set = function (key, value) {
    if (this.values[key] == null) {//如键不存在则身【键】数组添加键名
        this.keys.push(key);
    }
    this.values[key] = value;//给键赋值
};

//获取键对应的值
this.get = function (key) {
    return this.values[key];
};

//去除键值,(去除键数据中的键名及对应的值)
this.remove = function (key) {
    this.keys.remove(key);
    this.values[key] = null;
};

//判断键值元素是否为空
this.isEmpty = function () {
    return this.keys.length == 0;
};

//获取键值元素大小
this.size = function () {
    return this.keys.length;
};

//遍历Map,执行处理函数. 回调函数 function(key,value,index){..}
this.each = function(fn){
    if(typeof fn != 'function'){
        return;
    }
    var len = this.keys.length;
    for(var i=0;i<len;i++){
        var k = this.keys[i];
        fn(k,this.values[k],i);
    }
};

//获取键值数组,返回键值对象{key,value}的数组
this.entrys = function() {
    var len = this.keys.length;
    var entrys = new Array(len);
    for (var i = 0; i < len; i++) {
        entrys[i] = {
            key : this.keys[i],
            value : this.values[i]
        };
    }
    return entrys;
};

this.getValueBySection = function (num) {
    var size = this.keys.length;
    var resultIndex = size;
    for(var i = 0; i < size; i++){
        if(this.keys[i] > num)
            resultIndex = i;
    }
    return this.values[this.keys[resultIndex - 1]];
}

//重写toString方法
this.toString = function(){
    var s = "{";
    for(var i=0;i<this.keys.length;i++,s+=','){
        var k = this.keys[i];
        s += k+"="+this.values[k];
    }
    s+="}";
    return s;
};

}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值