很早收集的,不知道是从哪里流传出来,整理下分享给大家
function Map() {
// 底层保存数据结构
var struct = function(key, value) {
this.key = key;
this.value = value;
};
// 如果key相同值会被覆盖
var put = function(key, value) {
for ( var i = 0; i < this.size(); i++) {
if (this.arr[i].key === key) {
this.arr[i].value = value;
return;
}
}
this.arr[this.arr.length] = new struct(key, value);
};
// 根据key获取值
var get = function(key) {
for ( var i = 0; i < this.size(); i++) {
if (this.arr[i].key === key) {
return this.arr[i].value;
}
}
return null;
};
// 删除
var remove = function(key) {
for ( var i = 0; i < this.size(); i++) {
if (this.arr[i].key === key) {
this.arr.splice(i, 1);
}
}
};
var size = function() {
return this.arr.length;
};
var isEmpty = function() {
return this.size() <= 0;
};
// 迭代所有key
var listKeys = function() {
var key = [];
for ( var i = 0; i < this.size(); i++) {
key.push(this.arr[i].key);
}
return key;
};
var methodParamNames = function(method) {
var names = new Array;
for ( var i = 0; i < this.size(); i++) {
if (this.arr[i].key.indexOf(method + '_') >= 0) {
var vals = this.arr[i].key.split("_");
if (vals[2] != "result")
names.push(vals[1]);
}
}
return names;
};
// 暴露私有方法
this.arr = new Array();
this.get = get;
this.put = put;
this.remove = remove;
this.size = size;
this.isEmpty = isEmpty;
this.methodParamNames = methodParamNames;
this.keys = listKeys;
}
简单的测试:
var map = new Map();
map.put("name", "robin");
map.put("1", "aaaa");
map.put(1, "bbbb");
console.log(map.arr);
console.log(map.size());
console.log(map.keys());
console.log(map.get("1"));
map.remove(1);
console.log(map.size());
分享到:
相关推荐
如果需要保持元素的顺序并且键总是数字,那么Array是一个好选择。但如果键可以是任意值,并且需要高效地查找或删除键值对,那么Map更为合适。熟练掌握这两种数据结构的用法,能帮助我们编写更高效、更易维护的...
在本文中,我们将深入探讨一种高性能的JavaScript `Map`实现,它基于JSON,具有出色的稳定性和更高的容量。 首先,我们来看传统的JavaScript `Map`。原生的`Map`提供了如`set`、`get`、`delete`、`has`等方法,便于...
虽然ES6引入了内置的`Map`构造函数,但在本文中,我们将通过模拟的方式,利用JavaScript中的数组来实现一个简易版的Map对象。 #### 二、设计思路 我们的目标是创建一个名为`Map`的构造函数,该函数具备以下方法: -...
在`map.js`文件中,可能会有对Map的实现或扩展,比如添加一个`forEach`方法遍历Map的所有键值对,或者一个`size`属性获取Map中的元素数量。 `object.js`文件可能包含与Object相关的辅助函数,比如深拷贝、属性检查...
这篇博客文章可能探讨了如何通过自定义方式实现一个类似于`Map`的功能。下面将详细讨论`Map`集合的关键特性以及可能的自定义实现。 **Map集合的特性** 1. **键值对存储**:`Map`允许存储任意类型的键值对,包括...
首先,创建一个Map对象非常简单,可以通过调用Map构造函数并传入可迭代对象(如数组)来初始化: ```javascript let map = new Map([[1, 'one'], [2, 'two']]); ``` Map对象提供了多种方法来操作和访问数据: 1. ...
在JavaScript的世界里,`Map`对象是一个强大的数据结构,它允许我们存储键值对,且键可以是任意类型,而不仅仅是字符串。这与原生的`Object`有着本质的区别,`Object`的键必须是字符串或符号。本文将深入探讨`Map`...
在描述中,“高人把google map的javascript全部下载下来 可以实现大部分功能 离线使用GOOGLEMAP”,说明了这是一个高手编写的程序,他或她已经将Google Maps的JavaScript库进行了本地化处理,使得开发者可以在没有...
javascript实现map,极其方便,可在需要当前页处理多数据时使用
本文将深入探讨如何在JavaScript中实现一个简单的HashMap结构,并讨论与`Object`相关的陷阱。 首先,我们来看一个简单的HashMap实现: ```javascript var hashMap = { Set: function(key, value) { this[key] = ...
javascript Map原型,对象,实现javascript中的Map数据类型功能
- 使用数组的解构赋值,每个数组元素是一个包含两个元素的数组,分别代表键和值,如`let map = new Map([['key1', 'value1'], ['key2', 'value2']]);` 2. 存取数据: - `set(key, value)`:设置键值对。 - `get...
javascript 模拟 java中的 List,Map js文件为 js/utils.js IE6.0 测试通过 <br>List: add(var obj) //添加一个元素 remove(var index) //删除一个元素 get(var index) //获取一个元素 remove...
例如,在实现一个缓存系统时,可以使用Map来存储最近访问的项目,并保持它们的访问顺序。 此外,Map可以与其他数据结构结合使用,如Set。例如,我们可以创建一个Map,其中键是Set,值是相关联的数据,这样可以方便...
例如,`Array.from(map)`可以将Map转换为数组,`new Set(map)`则可以创建一个新的Set,包含Map的所有键。 6. **弱引用**:JavaScript还提供了一种叫做WeakMap的特殊类型,它的键必须是对象,并且是弱引用,这意味着...
javascript map类。类中有相应demo,在javascript中实现Map的一个类,包括map中对应的一些数据结构相关算法。
在本项目中,“map-example.zip_html5_javascript_map”是一个包含使用HTML5和JavaScript实现的网页动态地图的压缩包。这个项目旨在展示如何利用这两种技术创建交互式地图应用,为用户提供丰富的地理信息可视化体验...
在本示例中,我们将详细讨论如何使用自定义函数实现一个简单的Map功能。 首先,创建一个新的Map实例: ```javascript var map = new Map(); ``` 接着,我们可以使用`put`方法来添加键值对: ```javascript map.put...
1.可以用null,boolean,string,number,array,Date,自定义类的对象作键值,数组里的元素必须是实现equals方法的类型,而且数组里含有null,undefined,NaN会弹出异常; 2.数组维数尽量不要太多,程序里递归检查数组元素...
本教程将深入探讨如何利用SuperMap iClient 6R for JavaScript库来实现一个功能,即当鼠标移动到地图上时,实时显示当前鼠标的地理坐标。SuperMap是一款强大的GIS软件,其iClient系列为开发者提供了丰富的JavaScript...