javascript 实现键值对 "map"

//javascript 没有map,但是有map功能-_-! 自己动手,丰衣足食

	(function(){
		try{
		function Directory(){
			this.key = new Array();
			this.value = new Array();

		}

		//添加
		Directory.prototype.add = function(key,value){
			//key是否和已经存在的key重复
			for(var i=0;i<this.key.length;i++){
				if(this.key[i] == key){
					 throw new Error("重复key"); 
					}
				}
			//没重复,add
				this.key.push(key);
				this.value.push(value);
			}

		//获取
		Directory.prototype.get = function(key){
			for(var i=0;i<this.key.length;i++){
				if(this.key[i] == key)
					return this.value[i];
			}
			throw new Error("没有你查什么 ReferenceError"); 
		}

		//删除
		Directory.prototype.remove = function(key){
			for(var i=0;i<this.key.length;i++){
				if(this.key[i] == key){
					//删除i位置的元素
					this.key.splice(i,1);
					this.value.splice(i,1);
					return true;
				}
			}
			 throw new Error("没有你删毛线 ReferenceError"); 
		}

		var myarr = new Directory();
		myarr.add("123",100);
		myarr.add("wo","bysowhat");
		alert(myarr.get("wo"));
		alert(myarr.get("123"));
		myarr.remove("123");
		alert(myarr.get("123"));

	}catch(e){
		alert(e.message);
	}

	})();

完整!

转载。。。。

/*
 * 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) {
        var bln = 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;
    }
}

Creating a new Error object:

Internet Explorer supports the following form:

var errorObj = new Error([number[, description]]);

number 
Optional. Integer that specifies the error code. Default is 0. Sets the error property of the Error object.

message 
Optional. String that specifies the message of the error. Default is an empty string. Sets the description and messageproperties of the Errorobject.

Firefox supports the following form:

var errorObj = new Error([message[, fileName[, lineNumber]]]);

message 
Optional. String that specifies the message of the error. Default is an empty string. Sets the description and messageproperties of the Errorobject.

fileName 
Optional. String that specifies the name of the file where the error occurs. Default is the file where the Error object is created. Sets the fileNameproperty of the Error object.

lineNumber 
Optional. Integer that specifies the line number where the error occurs. Default is the line number, where the Errorobject is created. Sets thelineNumber property of the Error object.

Opera, Google Chrome and Safari support the following form:

var errorObj = new Error([message]);

message 
Optional. String that specifies the message of the error. Default is an empty string. Sets the description and messageproperties of the Error object.

时间: 2024-10-29 08:04:21

javascript 实现键值对 "map"的相关文章

Java记录 -63- Java的键值映射Map

public interface Map<K,V> 将键映射到值的对象.一个映射不能包含重复的键:每个键最多只能映射到一个值. Map接口取代 Dictionary 类,后者完全是一个抽象类,而不是一个接口. Map 接口提供三种collection 视图,允许以键集.值集或键-值映射关系集的形式查看某个映射的内容.映射顺序 定义为迭代器在映射的 collection 视图上返回其元素的顺序.某些映射实现可明确保证其顺序,如 TreeMap 类:另一些映射实现则不保证顺序,如 HashMap 

[Swift]LeetCode677. 键值映射 | Map Sum Pairs

Implement a MapSum class with insert, and sum methods. For the method insert, you'll be given a pair of (string, integer). The string represents the key and the integer represents the value. If the key already existed, then the original key-value pai

使用javascript以键值对的方式读取查询字符串【QueryString】qvkb

消息摘要(Message Digest)数据库作为最关键的基础设施,渗透技术领域的方方面面.随着互联网应用的广泛普及,海量数据的存储及访问成为系统设计的一大痛点.随着各行各业对信息化管理的依赖日益加剧,企业对数据访问的连续性提出了更高的要求,面对纷至沓来的稳定性及高可用需求,数据库技术已然成为各领域信息化建设的关键一环.作为SDCC系列技术峰会的一部分,来自阿里巴巴.腾讯.微博.网易等多家企业的数据库专家及高校研究学者,将围绕Oracle.MySQL.PostgreSQL.Redis等热点数据库

用字典给Model赋值并支持map键值替换

这个是昨天教程的升级版本,支持键值的map替换. 源码如下: NSObject+Properties.h 与 NSObject+Properties.m // // NSObject+Properties.h // // Created by YouXianMing on 14-9-4. // Copyright (c) 2014年 YouXianMing. All rights reserved. // #import <Foundation/Foundation.h> @interface

如何在STL的map中使用结构体作为键值

这里首先给出容器map的原型: template < class Key, class T, class Compare = less<Key>, class Alloc = alloc> class map{ ... } 可以看到模板参数一共有四个,第一个就是Key,即键:第二个就是值:第四个就是空间配置器,默认使用alloc(随STL版本不同而不同).那么第三个是啥? 我们知道,map的底层数据结构,其实是树,更确切的说,是一个RB-tree(红黑树).RB-tree树在进行插

std::map使用结构体自定义键值

使用STL中的map时候,有时候需要使用结构题自定义键值,比如想统计点的坐标出现的次数 struct Node{ int x,y; }; ...... map<Node,int>mp; mp[(Node){x,y}]++; 这样子的话,会出现一堆报错 c:\mingw\lib\gcc\mingw32\4.8.1\include\c++\bits\stl_function.h||In instantiation of 'bool std::less<_Tp>::operator()(

Java基础知识强化之集合框架笔记53:Map集合之Map集合的遍历 键值对对象找键和值

1. Map集合的遍历(键值对对象找键和值) Map -- 夫妻对  思路:  A: 获取所有结婚证的集合  B: 遍历结婚证的集合,得到每一个结婚证  C: 根据结婚证获取丈夫和妻子 转换:  A: 获取所有键值对对象的集合  B: 遍历键值对对象的集合,得到每一个键值对对象  C: 根据键值对对象获取键和值 2. 代码示例: 1 package cn.itcast_01; 2 3 import java.util.HashMap; 4 import java.util.Map; 5 impo

各种Map的区别,想在Map放入自定义顺序的键值对

今天做统计时需要对X轴的地区按照地区代码(areaCode)进行排序,由于在构建XMLData使用的map来进行数据统计的,所以在统计过程中就需要对map进行排序. 一.简单介绍Map 在讲解Map排序之前,我们先来稍微了解下map.map是键值对的集合接口,它的实现类主要包括:HashMap,TreeMap,Hashtable以及LinkedHashMap等.其中这四者的区别如下(简单介绍): HashMap:我们最常用的Map,它根据key的HashCode 值来存储数据,根据key可以直接

用javascript在客户端删除某一个cookie键值对

下面这个方法展示如何在客户端浏览器上用javascript删除某一个cookie键值对. //用javascript删除某一个cookie的方法,该方法传入要删除cookie的名称 function RemoveCookie(cookieName) { var cookies = document.cookie.split(";");//将所有cookie键值对通过分号分割为数组 //循环遍历所有cookie键值对 for (var i = 0; i < cookies.leng