JavaScript_object(基于map和数组练习)

JavaScript在编程过程中,不会像java那么方便,提供大量的API让开发这直接去调用,但底层也封装大量的工具让开发者写方法去实现,

以map为例,写简单的增删改查模拟java中的map:

function Map() {
  var obj = {};  //创建一个对象

//将值绑定到map上
  this.put = function (key,value) {
    obj[key] = value;
  }

  //获取map的个数
  var count = 0;
  this.size = function() {
    var count = 0;
    for ( var i in obj) {
      count ++;
    }
    return count;
  }

  //根据key获取value(很常用,今天写java时就用到)
  this.get = function(key) {
    if (obj[key] || obj[key] === 0 || obj[key] === false) {
      return obj[key];
    }else{
      return null;
    }
  }

  //移除值
  this.remove = function(key) {
    if (obj[key] || obj[key] === 0 || obj[key] === false) {
      delete obj[key];
    }
  }  
  

  //遍历map的key(value);
  this.foreach = function(fn) {  //fn回调函数
    for ( var i in obj) {
      fn(i,obj[i]);
    }
  }
}

  var m = new Map();  //实例化map
  m.put("001",false);  //将键值添加到map中
  m.put("002",true);
  m.put("003","sz");

  //进行测试
  alert(m.size());  
  alert(m.get("003"));
  alert(m.remove("001"));

  m.foreach(function(key,value){
    alert(key + ":" + value);
  })

  

在数组中去重,JavaScript中对象的key永远是唯一的,所以利用特性写简单的方法去重

var arr = [ 2, 1, 2, 10, 2, 3, 5, 5, 1, 10, 13 ];

将数组转化成一个对象
function obj(attr) {
  var obj = {};
  for ( var i = 0; i < attr.length; i++) {
    obj[arr[i]] = true;
  }
  return obj;
}

将对象转换成一个数组
function array(obj) {
  var att = [];
  for ( var i in obj) {
    if (obj.hasOwnProperty(i)) {
      att.push(i);
    }  
  }
  return att;
}

function name(newArr) {
  return array(obj(newArr));
}

alert(name(arr));

上一篇:ACCESS_REFUSED - Login was refused using authentication mechanism PLAIN


下一篇:iOS app 程序启动原理