本文介绍如何在 JavaScript 中基于普通对象实现一个自定义的 Map 数据结构。通过封装 put、get、size 及 eachMap 等方法,演示了键值对的存储、获取、计数及遍历操作,为理解 JS 对象作为哈希表的基础用法提供示例。
JavaScript 自定义 Map 数据结构实现
本文通过一个具体实例,展示了如何使用 JavaScript 语言自定义实现一个 Map(映射)数据结构。该示例旨在为开发者提供参考,帮助理解如何在原生对象基础上扩展功能。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>www.jb51.net JS自定义map方法</title>
</head>
<body>
<script>
window.onload = function() {
function Map() {
var obj = {};
this.put = function(key, value) {
obj[key] = value;//把键值绑定到obj对象上
}
//size方法,获取Map容器的个数
this.size = function() {
var count = 0;
for(var attr in obj) {
count++;
}
return count;
}
//get方法,根据key获取value的值
this.get = function(key) {
if(obj[key] || obj[key] === 0 || obj[key] === false) {
return obj[key]
} else {
return null;
}
}
//remove方法,删除方法
this.remove = function(key) {
if(obj[key] || obj[key] === 0 || obj[key] === false) {
delete obj[key]
}
}
//each方法,遍历方法
this.eachMap = function(callBack) {
for(var attr in obj) {
callBack(attr, obj[attr])
}
}
}
var m = new Map();
m.put('01', "aaa");
m.put('02', "bbb");
m.put('03', "ccc");
m.put('04', "ddd");
m.put('05', "eee");
//alert(m.size());
//alert(m.get('03'));
// alert(m.remove('ccc'));
m.eachMap(function(key ,value) {
console.log(key)
console.log(value)
})
}
</script>
</body>
</html>
以下是代码运行后的实际输出结果。

读者可以使用在线 HTML/CSS/JavaScript 代码运行工具(http://tools.jb51.net/code/HtmlJsRun)来测试上述代码的实际运行效果,以便直观查看控制台输出。
如需深入了解 JavaScript 相关知识,建议查阅本站专题:《JavaScript数组操作技巧总结》、《JavaScript遍历算法与技巧总结》、《javascript面向对象入门教程》、《JavaScript数学运算用法总结》、《JavaScript数据结构与算法技巧总结》以及《JavaScript错误与调试技巧总结》。
希望本文提供的自定义 Map 实现方案能对读者的 JavaScript 程序设计工作有所助益。