大家好,又见面了,我是你们的朋友全栈君。
绪论
哈希表特点: 存储键值对的数据结构,哈希表内部是使用一个hash函数把传入的键转换成一串数字,而这串数字将作为键值对实际的key,通过这个key查询对应的value非常快。
哈希表方法:
- add:添加一组键值对。
- remove:删除一组键值对。
- lookup:查找一个键对应的值。
正文
<!DOCTYPE html>
<div lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>index</title>
<script src="js/jquery-2.2.4.min.js"></script>
<style> </style>
</head>
<body>
</body>
<script> $(document).ready(function () {
var hashTable = new myHashTable(); hashTable.add(1, 10); hashTable.add(2, 20); hashTable.add(3, 30); hashTable.add(4, 40); hashTable.add(2, 25); hashTable.add(null, 250); hashTable.add(undefined, 251); console.log('内容:' + hashTable.show()); hashTable.remove(3); console.log('内容:' + hashTable.show()); console.log('value:' + hashTable.lookup(2)); console.log('value:' + hashTable.lookup(3)); }); function hash(str, max) {
var hash = 0; var string = new String(str); for (var i = 0; i < string.length; i++) {
hash += string.charCodeAt(i); } return hash % max; } function myHashTable() {
var arr = []; var MAX = 4; // 添加一组键值对 this.add = function(k, v) {
if (k === null || k === undefined) {
return; } var index = hash(k, MAX); if (arr[index] === undefined) {
arr[index] = [[k, v]]; } else {
var b = !!0; for (var i = 0; i < arr[index].length; i++) {
if (arr[index][i][0] === k) {
arr[index][i][1] = v; b = !0; } } if (!b) {
arr[index].push([k, v]); } } }; // 删除一组键值对 this.remove = function(k) {
var index = hash(k, MAX); if (arr[index].length === 1 && arr[index][0][0] === k) {
delete arr[index]; } else {
for (var i = 0; i < arr[index].length; i++) {
if (arr[index][i][0] === k) {
delete arr[index][i]; } } } }; // 查找一个键对应的值 this.lookup = function(k) {
var index = hash(k, MAX); if (arr[index] === undefined) {
return undefined; } else {
for (var i = 0; i < arr[index].length; i++) {
if (arr[index][i][0] === k) {
return arr[index][i][1]; } } } }; // 展示 this.show = function() {
return arr; }; } </script>
</div>
结果
(若有什么错误,请留言指正,3Q)
发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/128984.html原文链接:https://javaforall.cn
【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛
【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...