JavaScript Map 实现

//定义map
function Map() {
	this.container = {};
}
//将key-value放入map中
Map.prototype.put = function(key, value) {
	try {
		if (key != null && key != "")
			this.container[key] = value;
	} catch (e) {
		return e;
	}
};

//根据key从map中取出对应的value
Map.prototype.get = function(key) {
	try {
		return this.container[key];
	} catch (e) {
		return e;
	}
};

//判断map中是否包含指定的key
Map.prototype.containsKey = function(key) {
	try {
		for ( var p in this.container) {
			if (p == key)
				return true;
		}
		return false;

	} catch (e) {
		return e;
	}

}

//判断map中是否包含指定的value
Map.prototype.containsValue = function(value) {
	try {
		for ( var p in this.container) {
			if (this.container[p] === value)
				return true;
		}
		return false;

	} catch (e) {
		return e;
	}
};

//删除map中指定的key
Map.prototype.remove = function(key) {
	try {
		delete this.container[key];
	} catch (e) {
		return e;
	}
};

//清空map
Map.prototype.clear = function() {
	try {
		delete this.container;
		this.container = {};

	} catch (e) {
		return e;
	}
};

//判断map是否为空
Map.prototype.isEmpty = function() {

	if (this.keySet().length == 0)
		return true;
	else
		return false;
};

//获取map的大小
Map.prototype.size = function() {

	return this.keySet().length;
}

//返回map中的key值数组
Map.prototype.keySet = function() {
	var keys = new Array();
	for ( var p in this.container) {
		keys.push(p);
	}

	return keys;
}

//返回map中的values值数组
Map.prototype.values = function() {
	var valuesArray = new Array();
	var keys = this.keySet();
	for (var i = 0; i < keys.length; i++) {
		valuesArray.push(this.container[keys[i]]);
	}
	return valuesArray;
}

//返回 map 中的 entrySet 对象
Map.prototype.entrySet = function() {
	var array = new Array();
	var keys = this.keySet();
	for (var i = 0; i < keys.length; i++) {
		array.push(keys[i],this.container[keys[i]]);
	}
	return array;
}

//返回 map 中的 value值的和(当值是 Nunmber 类型时有效)
Map.prototype.sumValues = function() {
	var values = this.values();
	var result = 0;
	for (var i = 0; i < values.length; i++) {
		result += Number(values[i]);
	}
	return result;
}

///计算两个整数的百分比值
function toPercent(num, total){
	num = parseFloat(num);
	total = parseFloat(total);
	if (isNaN(num) || isNaN(total)) {
		return "0";
	}
	return total <= 0 ? "0%" : (Math.round(num / total * 10000) / 100.00 + "%");
//	return (Math.round(this * 10000)/100).toFixed(2) + ‘%‘;
}

  

时间: 2024-12-30 22:30:10

JavaScript Map 实现的相关文章

JavaScript Map对象的实现

1. [代码]js代码     /* * MAP对象,实现MAP功能 * * 接口: * size()     获取MAP元素个数 * isEmpty()    判断MAP是否为空 * clear()     删除MAP所有元素 * put(key, value)   向MAP中增加元素(key, value)  * remove(key)    删除指定KEY的元素,成功返回True,失败返回False * get(key)    获取指定KEY的元素值VALUE,失败返回NULL * ele

JavaScript Map 和 Set

结论 Map:存放键值对,区别于 Object,键可以是任何值. Set:存放不重复的值 Map 存储键值对,读取时与插入顺序一致. var map = new Map([[1, "1"], [3, "3"], [2, "2"]]); map.set("foo", "bar"); for (const [key, val] of map) { console.log(key, val); } 输出: 1 '

Arcgis for javascript map操作addLayer详解

本节的内容很简单,说说Arcgis for Javascript里面map对象的addLayer方法.在for JS的API中,addLayer方法有两种,如下图: addLayer方法 在addLayer方法里面有两个参数,一个是必选参数layer,另一个是可选参数index,layer就不说了,可以是支持的任何一种layer,重点说说index.index参数用来控制地图显示的层级关系,也就是哪个在上,哪个在下的问题,举个例子: 不带参数: map.addLayer(base); map.a

javascript map

说明 是一组键值对的结构,用于存储key-value的数据 创建map //创建方式1 var m = new Map([['michael',95],['bob',75],['tracy',85]]); //创建方式2 var m = new Map(); map添加元素 m.set('Adam', 67); map判断元素是否存在 m.has('Adam'); map获取元素 m.get('Adam'); map删除元素 m.delete('Adam');

JavaScript中Map和ForEach的区别

译者按: 惯用Haskell的我更爱map. 原文: JavaScript?-?Map vs. ForEach - What's the difference between Map and ForEach in JavaScript? 译者: Fundebug 为了保证可读性,本文采用意译而非直译.另外,本文版权归原作者所有,翻译仅用于学习. 如果你已经有使用JavaScript的经验,你可能已经知道这两个看似相同的方法:Array.prototype.map()和Array.prototyp

【前端_js】javascript中数组的map()方法

数组的map()方法用于遍历数组,每遍历一个元素就调用回调方法一次,并将回调函数的返回结果作为新数组的元素,被遍历的数组不会被改变. 语法:let newAarray = arr.map(function callback(currentValue, index, array) { // Return element for newArray } 示例: let numbers = [1, 5, 10, 15]; let doubles = numbers.map((x) => { return

map area 鼠标跟随

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Typ

遍历$.map和$.each

<body> <p style="color:red;"><b>Values: </b></p> <form> <input type="text" name="name" value="John"/> <input type="text" name="password" value="p

《自己动手写开源框架10》:Web界面快速开发实践

下面是一些常用的链接,供大家使用: GIT地址:https://git.oschina.net/tinyframework/tiny问题报告:https://git.oschina.net/tinyframework/tiny/issues更多内容,请看本人博客,不一样的内容,一样的精彩! 在展示过程的同时,会把相关的知识做一个充分的介绍 .一.寻找网站模板 要做网站,不能没有模板,自己不会做网页设计,咋办?问谷歌找百度呗,找了一阵,看到下面这个模板不错,就它了. http://www.toop