js-map对象

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">

<html>
<head>
    <title>Untitled</title>
</head>
<script type="text/javascript">
Array.prototype.get = function(val) {
    for (var i = 0; i < this.length; i++) {
         var map = this[i];
         if(map.get('id') == val){
             return map;
         }
    }
    return "";
};

Array.prototype.indexOf = function(val) {
    for (var i = 0; i < this.length; i++) {
         var map = this[i];
         if(map.get('id') == val){
             return i;
         }
    }
    return -1;
};
Array.prototype.remove = function(val) {
    var index = this.indexOf(val);
    if (index > -1) {
        this.splice(index, 1);
    }
};

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;
}

/*
添加的时候 产生一个序号
公司的集合 方便增删改查get put remove
map key   value   公司名称  公司的对象
    1   公司的对象  map (key value) 字段名 字段属性
    2    公司的对象 公司的对象
添加的时候 产生一个序号
某一个公司的人员的集合  
map  key value 人员的集合
     1: array[,,,,,] 人员的对象 map (key value) 字段名 字段属性
*/

var companyMap = new Map();//公司情况
var com_staff_map = new Map();//公司对应人员情况

var company_map1 = new Map();//公司1
company_map1.put("id","1");
company_map1.put("company","nantian");
company_map1.put("ogcontract","wang,yue,hui");
company_map1.put("ogdateend","201212");

var company_map2 = new Map();//公司2
company_map2.put("id","2");
company_map2.put("company","haihui");
company_map2.put("ogcontract","li,zhang");
company_map2.put("ogdateend","201212");

companyMap.put("1",company_map1);
companyMap.put("2",company_map2);

com_staff_map.put("1",[]);//公司1 所对应的人员
com_staff_map.put("2",[]);//公司2 所对应的人员

var staffarray = [];
var staffmap = new Map();//人员1
staffmap.put("id","1");
staffmap.put("name","wangyuehui");
staffmap.put("seatno","12");
staffmap.put("ogdateend","201212");
staffarray.push(staffmap);

var staffmap2 = new Map();//人员2
staffmap2.put("id","2");
staffmap2.put("name","wangshuguo");
staffmap2.put("seatno","15");
staffmap2.put("ogdateend","20111110");
staffarray.push(staffmap2);

com_staff_map.put("1",staffarray);// 把人员1 2 添加到 公司1 中

//alert("companyMap的大小为:" + companyMap.size());
//alert("com_staff_map的大小为:" + com_staff_map.size());

alert("公司key为1的companyMap中存储的公司对象为:" + companyMap.get("1"));
alert("公司key为1的companyMap中存储的公司对象的名称为:" + companyMap.get("1").get("company"));

alert("公司key为2的companyMap中存储的公司对象的人员情况为:" + companyMap.get("2").get("ogcontract"));


alert("key为1的com_staff_map中存储的公司人员数据对象为:" + com_staff_map.get("1"));


alert("key为1的com_staff_map中存储的公司人员数据对象的序号为1的对象变化之前名称为:" + com_staff_map.get("1").get("1").get("name"));
com_staff_map.get("1").get("1").put("name","jkdfkjlkd");
alert("key为1的com_staff_map中存储的公司人员数据对象的序号为1的对象变化之后名称为:" + com_staff_map.get("1").get("1").get("name"));


alert("key为1的com_staff_map中存储的公司人员数据对象的序号为1的对象索引为:" + com_staff_map.get("1").indexOf("1"));

alert("key为1的com_staff_map中存储的公司人员数据对象的序号为1的删除之前的对象长度为:" + com_staff_map.get("1").length);
com_staff_map.get("1").remove("1");
alert("key为1的com_staff_map中存储的公司人员数据对象的序号为1的删除之后的对象长度为:" + com_staff_map.get("1").length );


/*
var map = new Map();
 map.put("company","redhacker");
 map.put("type","douguoqiang");
 map.put("ogcontract","dougq");
 alert("map的大小为:" + map.size())
 alert("key为re的map中存储的对象为:" + map.get("re"));
 map.remove("re");
 alert("移除key为re的对象后,获取key为re的map中存储的对象为:" + map.get("re"));
 alert("map移除一个元素后的大小为:" + map.size());
 alert("map是否是一个空map:" + map.isEmpty());
 */

</script>
<body>

hello world!!!!!!!

</body>
</html>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值