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