JavaScript创建Map对象(转)
JavaScript 里面本身没有map对象,用JavaScript的Array来实现Map的数据结构。
- /*
- * MAP对象,实现MAP功能
- *
- * 接口:
- * size() 获取MAP元素个数
- * isEmpty() 判断MAP是否为空
- * clear() 删除MAP所有元素
- * put(key, value) 向MAP中增加元素(key, value)
- * remove(key) 删除指定KEY的元素,成功返回True,失败返回False
- * get(key) 获取指定KEY的元素值VALUE,失败返回NULL
- * element(index) 获取指定索引的元素(使用element.key,element.value获取KEY和VALUE),失败返回NULL
- * containsKey(key) 判断MAP中是否含有指定KEY的元素
- * containsValue(value) 判断MAP中是否含有指定VALUE的元素
- * values() 获取MAP中所有VALUE的数组(ARRAY)
- * keys() 获取MAP中所有KEY的数组(ARRAY)
- *
- * 例子:
- * var map = new Map();
- *
- * map.put("key", "value");
- * var val = map.get("key")
- * ……
- *
- */
- function Map() {
- this.elements = new Array();
- //获取MAP元素个数
- this.size = function() {
- return this.elements.length;
- }
- //判断MAP是否为空
- this.isEmpty = function() {
- return(this.elements.length < 1);
- }
- //删除MAP所有元素
- this.clear = function() {
- this.elements = new Array();
- }
- //向MAP中增加元素(key, value)
- this.put = function(_key, _value) {
- this.elements.push( {
- key : _key,
- value : _value
- });
- }
- //删除指定KEY的元素,成功返回True,失败返回False
- this.remove = function(_key) {
- var bln = false;
- try{
- for(i = 0; i < this.elements.length; i++) {
- if(this.elements[i].key == _key) {
- this.elements.splice(i, 1);
- return true;
- }
- }
- } catch(e) {
- bln = false;
- }
- return bln;
- }
- //获取指定KEY的元素值VALUE,失败返回NULL
- this.get = function(_key) {
- try{
- for(i = 0; i < this.elements.length; i++) {
- if(this.elements[i].key == _key) {
- return this.elements[i].value;
- }
- }
- } catch(e) {
- return null;
- }
- }
- //获取指定索引的元素(使用element.key,element.value获取KEY和VALUE),失败返回NULL
- this.element = function(_index) {
- if(_index < 0 || _index >= this.elements.length) {
- return null;
- }
- return this.elements[_index];
- }
- //判断MAP中是否含有指定KEY的元素
- this.containsKey = function(_key) {
- varbln = false;
- try{
- for(i = 0; i < this.elements.length; i++) {
- if(this.elements[i].key == _key) {
- bln = true;
- }
- }
- } catch(e) {
- bln = false;
- }
- return bln;
- }
- //判断MAP中是否含有指定VALUE的元素
- this.containsValue = function(_value) {
- var bln = false;
- try{
- for(i = 0; i < this.elements.length; i++) {
- if(this.elements[i].value == _value) {
- bln = true;
- }
- }
- } catch(e) {
- bln = false;
- }
- return bln;
- }
- //获取MAP中所有VALUE的数组(ARRAY)
- this.values = function() {
- var arr = new Array();
- for(i = 0; i < this.elements.length; i++) {
- arr.push(this.elements[i].value);
- }
- return arr;
- }
- //获取MAP中所有KEY的数组(ARRAY)
- this.keys = function() {
- var arr = new Array();
- for(i = 0; i < this.elements.length; i++) {
- arr.push(this.elements[i].key);
- }
- return arr;
- }
- }
- var map = new Map();
- map.put("key1", "value1");
- map.put("key2", "value2");
- map.put("key3", "value3");
- //var val = map.get("key1");
- // var val = map.containsKey("key1");
- // var val = map.element(2).value;
- var arr=map.keys();
- for(var i=0;i<arr.length;i++){
- alert(map.get(arr[i]));
- }
- // alert(val);
JavaScript创建Map对象(转)的更多相关文章
- JavaScript之Map对象
前言 工欲善其事,必先利其器.这是一款以前在前端项目中没有使用过的.有趣的对象,咱来看看如何使用~ 并非arrayObj.map(function) //arrayObj.map与arrayObj.f ...
- javascript自定义Map对象
javascript定义map对象开发前端组件的重要性就不过多阐述了,直接参考以下案例即可 <script type=text/javascript charset=utf-8> func ...
- javascript创建自定义对象和prototype
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- 自定义实现JavaScript的Map对象,修改IE不兼容MAP()的问题
由于IE8及以下版本不支持Map对象,本文为程序猿们提供了有效的解决方法. 本文重写了Map对象,实现了常用的set, get, put, clear, remove, delete, forEach ...
- 每天一点点之javascript(ES6) - Map对象
1.语法 键/值对的集合. mapObj = new Map() 注:集合中的键和值可以是任何类型.如果使用现有密钥向集合添加值,则新值会替换旧值. 2.属性下表列出了 Map 对象的属性和描述. 构 ...
- JavaScript 创建类/对象的几种方式
在JS中,创建对象(Create Object)并不完全是我们时常说的创建类对象,JS中的对象强调的是一种复合类型,JS中创建对象及对对象的访问是极其灵活的. JS对象是一种复合类型,它允许你通过变量 ...
- JavaScript—创建正则对象
创建正则对象 方式1: var reg = new RegExp('\d', 'i');var reg = new RegExp('\d', 'gi'); 方式2: var reg = /\d/i;v ...
- 通过JavaScript创建Qml对象
有两种方法可以创建,都是全局对象Qt提供的方法 一:用Qt.createComponent加载一个qml文件并创建Component 二:用Qt.createQmlObject从一个qml字符串创建C ...
- 【微信小程序开发之坑】javascript创建date对象
最近开发中用到date,开始以如下方式来创建: var date = new Date('2018-01-30 11:00:00'); 在开发工具上,调试,ios 和 android都好好的. 在真机 ...
随机推荐
- YII 快速创建项目GII
Yii 是一个基于组件.纯OOP的.用于开发大型 Web 应用的高性能PHP框架. 它将Web编程中的可重用性发挥到极致,能够显著加速开发进程 .Yii适合大流量的应用,如门户.BBS.CMS及B2B ...
- Delphi 关闭MDI子窗口
需要在子窗口的onClose事件中吧Action = caFree; 就可以了. procedure Tfrm_aa.FormClose(Sender: TObject; var Action: TC ...
- c++中实现委托
成员函数指针与高性能的C++委托(上篇) 撰文:Don Clugston 引子 标准C++中没有真正的面向对象的函数指针.这一点对C++来说是不幸的,因为面向对象的指针(也叫做"闭包(clo ...
- Solaris系统管理(一)
最近需要将一个项目从Linux平台迁移到Solaris,对Solaris进行了一点研究,总结如下. 一句话介绍: Solaris 是Sun Microsystems研发的计算机操作系统.它被认为是UN ...
- html --- javascript --- div --- 拖拽方块
当鼠标拖拽的很快时,光标会走出方块,所以把事件注册在了方块的父节点上, 如有疑问请参照:http://blog.csdn.net/a9529lty/article/details/2708171 使用 ...
- bzoj3064 CPU监控
今天终于写了一道正常的题 思路是这样的: 1.普通线段树add,set不变,并改为下放标记版本 2.past_addv 记录一个区间内可能的addv值的最大值 3.past_setv 记录一个区间被s ...
- Mac OS X 10.9 编译C++11
Notice: How to compile C++ with C++ 11 support in Mac Terminal stackoverflow上面的问题 其实mac里面的不是g++而是cla ...
- 算法:最大子数组own
转载标明出处:http://i.cnblogs.com/EditPosts.aspx?postid=4726782&update=1 暴力法: // maxValue.cpp : 定义控制台应 ...
- Android之操作SQLite
一.SQLite的介绍 1.SQLite简介 SQLite是一款轻型的数据库,是遵守ACID的关联式数据库管理系统,它的设计目标是嵌入 式的,而且目前已经在很多嵌入式产品中使用了它,它占用资源非常的 ...
- 转-sketch技巧
10个帮你UI设计提速的Sketch使用技巧 2015-4-11 09:59| 发布者: yuanxingbbs| 查看: 1129| 评论: 0 选择使用Sketch的理由很多,因为好奇跟风安装 ...