JavaScript Map实现

这篇博客介绍了如何在JavaScript中实现类似Java的Map功能。通过扩展JavaScript,可以实现Map的用法,调用方法简便。文章探讨了在实际编程场景中,特别是在处理一组可能存在重复项的数据时,JavaScript Map的重要性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

function HashMap () {
	data = {};
	var size = 0;
	// 清除所有的属性
	this.clear = function () {
		data = {};
	}
	/**
	 * 判断key是否存在
	 * @param key
	 * @return Boolean
	 */
	this.containsKey = function () {
		return Boolean(arguments[0] in data);
	}
	/**
	 * 判断值是否存在
	 * @param value
	 * @return Boolean
	 */
	this.containsValue = function () {
		var str = data.toSource();
		return str.indexOf(arguments[0]) == -1 ? false : true;
	}
	/**
	 * 返回key对应的v
	 */
	this.get = function () {
		return data[arguments[0]];
	}
	/**
	 * 判断是否为空
	 * @return Boolean
	 */
	this.isEmpty = function () {
		return size == 0 ? true : false;
	}
	/**
	 * 取出所有的key
	 * @return Array()
	 */
	this.keySet = function () {
		var arr = new Array();
		for (var i in data) {
			arr.push(i);
		}
		return arr;
	}
	/**
	 * 将key,value放入对象
	 * @param key
	 * @param value
	 */
	this.put = function () {
		data[arguments[0]] = [arguments[1]];
		if (!this.containsKey(arguments[0])) {
			size++;
		}
	}
	/**
	 * 将另外一个HashMap 复制到此Map
	 * @param map
	 */
	this.putAll = function () {
		data = arguments[0].getData();
	}
	/**
	 * 删除key对应的value
	 * @param key
	 * @return value与 key 关联的旧值
	 */
	this.remove = function () {
		var o = this.get(arguments[0]);
		if (o) {
			delete data[o];
			return o;
		}
		else {
			return null;
		}
	}
	/**
	 * 返回此HashMap的大小
	 * @reaturn Int
	 */
	this.size = function () {
		return size;
	}
	/**
	 * 返回此map所有的value集合
	 * @return Connections
	 */
	this.values = function () {
		var arr = new Array();
		for (var i in data) {
			arr.push(data[i])
		}
		return arr;
	}
	this.getData = function () {
		return data;
	}
}

 

JavaScript本身是没有map的,上面的代码可以完全在JavaScript中实现Java Map的用法,调用方法也是非常简单,如下:

var jsMap = new HashMap();
jsMap.containsKey("key名");
jsMap.put("key名","key值");

 

可能当你看到这里的时候会有疑问,在平时代码编写的时候,有必要扩展JavaScript的Map来使用么?

有这样一个例子,如果你又一组name=“picUrl”的text文本框,你需要判断出这组text文本框中是否存在重复?

那么,这种情况Map就发挥它本身的作用了!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值