js中自定义的map.js

来源:互联网 发布:安卓好用的读书软件 编辑:程序博客网 时间:2024/06/06 03:36

js中没有map这个类,只能自己写一个。以下map.js和map-util.js都是自定义的map,任选其一就可以。你可以用它来像java里new Map()和put()、remove()、get()等方法。

map.js:

function Map() {   var struct = function(key, value) {   this.key = key;   this.value = value;   }   var put = function(key, value){   for (var i = 0; i < this.arr.length; i++) {   if ( this.arr[i].key === key ) {   this.arr[i].value = value;   return;   }   }   this.arr[this.arr.length] = new struct(key, value);   }   var get = function(key) {   for (var i = 0; i < this.arr.length; i++) {   if ( this.arr[i].key === key ) {   return this.arr[i].value;   }   }   return null;   }   var remove = function(key) {   var v;   for (var i = 0; i < this.arr.length; i++) {   v = this.arr.pop();   if ( v.key === key ) {   continue;   }   this.arr.unshift(v);   }   }   var size = function() {   return this.arr.length;   }   var isEmpty = function() {   return this.arr.length <= 0;   }   this.arr = new Array();   this.get = get;   this.put = put;   this.remove = remove;   this.size = size;   this.isEmpty = isEmpty;   }   

map-util.js:

function Map() {    this.elements = new Array();    var i;    //获取MAP元素个数    this.size = function() {        return this.elements.length;    };    //判断MAP是否为空    this.isEmpty = function() {        return (this.elements.length < 1);    };    //删除MAP所有元素    this.clear = function() {        this.elements = new Array();    };    //向MAP中增加元素(key, value)     this.put = function(_key, _value) {        this.elements.push( {            key : _key,            value : _value        });    };        this.putFirst = function(_key, _value){    var tempList = this.elements;    this.elements = new Array();    this.elements.push( {            key : _key,            value : _value        });    for(var i=0;i<tempList.length;i++){    this.elements.push(    tempList[i]    );    }    }    //删除指定KEY的元素,成功返回True,失败返回False    this.remove = function(_key) {        var bln = false;        try {            for (i = 0; i < this.elements.length; i++) {                if (this.elements[i].key == _key) {                    this.elements.splice(i, 1);                    return true;                }            }        } catch (e) {            bln = false;        }        return bln;    };    //获取指定KEY的元素值VALUE,失败返回NULL    this.get = function(_key) {        try {            for (i = 0; i < this.elements.length; i++) {                if (this.elements[i].key == _key) {                    return this.elements[i].value;                }            }        } catch (e) {            return null;        }    };    //获取指定索引的元素(使用element.key,element.value获取KEY和VALUE),失败返回NULL    this.element = function(_index) {        if (_index < 0 || _index >= this.elements.length) {            return null;        }        return this.elements[_index];    };    //判断MAP中是否含有指定KEY的元素    this.containsKey = function(_key) {        var bln = false;        try {            for (i = 0; i < this.elements.length; i++) {                if (this.elements[i].key == _key) {                    bln = true;                }            }        } catch (e) {            bln = false;        }        return bln;    };    //判断MAP中是否含有指定VALUE的元素    this.containsValue = function(_value) {        var bln = false;        try {            for (i = 0; i < this.elements.length; i++) {                if (this.elements[i].value == _value) {                    bln = true;                }            }        } catch (e) {            bln = false;        }        return bln;    };    //获取MAP中所有VALUE的数组(ARRAY)    this.values = function() {        var arr = new Array();        for (i = 0; i < this.elements.length; i++) {            arr.push(this.elements[i].value);        }        return arr;    };    //获取MAP中所有KEY的数组(ARRAY)    this.keys = function() {        var arr = new Array();        for (i = 0; i < this.elements.length; i++) {            arr.push(this.elements[i].key);        }        return arr;    };}