js实现的Map、List,-问答-阿里云开发者社区-阿里云

开发者社区> 问答> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

js实现的Map、List,

2016-07-15 11:51:04 2266 1
/**
  * js实现list
  *
  */
function List(){
 
    this.value = [];
     
 
    /*添加*/
    this.add = function(obj){
        return this.value.push(obj);
    };
     
    /*大小*/
    this.size = function(){
        return this.value.length;
    }
 
    /*返回指定索引的值*/
    this.get = function(index){
        return this.value[index];
    }
 
    /*删除指定索引的值*/
    this.remove = function(index){
        this.value1 = [];                           
        this.value[index]='';                       
        for(var i=0;i<this.size();i++){
            if(this.value[i]!=''){                  
                this.value1.push(this.value[i]);
            }
        }
        this.value = this.value1;   
        delete this.value1;         
        return this.value;          
    }
     
    /*删除全部值*/
    this.removeAll = function(){
        return this.value=[];           
    }
 
    /*是否包含某个对象*/
    this.constains = function(obj){
        for(var i in this.value){       
            if( obj == this.value[i] ){ 
                return true;
            }else{                      
                continue;
            }
        }
        return false;               
    }
 
}
Map

/**
 * js Map 实现 
 * @returns {Map}
 */
function Map() {
    this.keys = [];
    this.data = {};
 
    /**
     * 放入一个键值对
     * @param {String} key
     * @param {Object} value
     */
    this.put = function(key, value) {
        if (this.data[key] == null) {
            this.keys.push(key);
        }
        this.data[key] = value;
    };
 
    /**
     * 获取某键对应的值
     * @param {String}  key
     * @return {Object} value
     */
    this.get = function(key) {
        return this.data[key];
    };
 
    /**
     * 是否包含该键
     */
    this.contain = function(key) {
        
        var value = this.data[key];
        if (value)
            return true;
        else
            return false;
    };
 
    /**
     * 删除一个键值对
     * @param {String} key
     */
    this.remove = function(key) {
        for(var index=0;index<this.keys.length;index++){
            if(this.keys[index]==key){
                this.keys.splice(index,1);
                break;
            }
        }
        //this.keys.remove(key);
        this.data[key] = null;
    };
 
    /**
     * 遍历Map,执行处理函数
     * @param {Function} 回调函数 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.data[k], i);
        }
    };
 
    /**
     * 获取键值数组(类似Java的entrySet())
     * @return 键值对象{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.data[i]
            };
        }
        return entrys;
    };
 
    /**
     * 判断Map是否为空
     */
    this.isEmpty = function() {
        return this.keys.length == 0;
    };
 
    /**
     * 获取键值对数量
     */
    this.size = function() {
        return this.keys.length;
    };
 
    /**
     * 重写toString
     */
    this.toString = function() {
        var s = "{";
        for ( var i = 0; i < this.keys.length; i++, s += ',') {
            var k = this.keys[i];
            s += k + "=" + this.data[k];
        }
        s += "}";
        return s;
    };
}
取消 提交回答
全部回答(1)
  • a123456678
    2019-07-17 19:56:52
    this.remove = function(index){
        this.value.splice(index,1);
        return this.value;
    }
    0 0
相关问答

1

回答

关于JS对象的一个问题?报错

2020-06-20 19:26:11 315浏览量 回答数 1

1

回答

js怎样定义一个字符串类型的json对象?报错

2020-06-15 19:27:18 365浏览量 回答数 1

1

回答

js 有没什么方法能判断对象是否存在某个属性(obj.h1.h2.h3)?报错

2020-06-08 17:10:51 297浏览量 回答数 1

1

回答

关于JS对象的一个问题:报错

2020-06-09 11:34:06 333浏览量 回答数 1

1

回答

js改变储存的dom对象:报错

2020-06-06 16:35:04 289浏览量 回答数 1

1

回答

请教一个插入框架引入js,修改对象的问题报错 

2020-06-03 09:33:33 304浏览量 回答数 1

1

回答

js 怎么删除一个对象的属性

2020-05-28 13:27:10 730浏览量 回答数 1

1

回答

使用jQuery将JS对象转换为数组

2020-01-15 09:59:37 251浏览量 回答数 1

1

回答

用jQuery作为JS对象从选项中添加选项的最佳方法是什么?

2020-01-08 17:00:43 310浏览量 回答数 1

1

回答

JavaScript 怎么删除一个对象的样式中的某个属性?

2016-06-12 15:40:51 2455浏览量 回答数 1
+关注
0
文章
14879
问答
问答排行榜
最热
最新
相关电子书
更多
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
冬季实战营第三期:MySQL数据库进阶实战
立即下载