js数据结构hashMap -----hashMap
// 散列表 hashMap// 散列函数/**给定一个key参数,我们就能根据组成key的每个字符的ASCII码值的和得到一个数字。所以, 首先需要一个变量来存储这个总和(行{1})。然后,遍历key(行{2})并将从ASCII表中查到 的每个字符对应的ASCII值加到hash变量中(可以使用JavaScript的String类中的charCodeAt 方法——行{3})。最后,返回hash值。为了得到比较小的数值,我们会使用hash值和一个任意 数做除法的余数(mod)**/var loseloseHashCode = function (key) {var hash = 0; //{1}for (var i = 0; i < key.length; i++) { //{2}hash += key.charCodeAt(i); //{3} }return hash % 37; //{4} };var djb2HashCode = function (key) {var hash = 5381; //{1}for (var i = 0; i < key.length; i++) { //{2}hash = hash * 33 + key.charCodeAt(i); //{3} }return hash % 1013}function HashTable() {var table = [];this.put = function (key, value) {var position = djb2HashCode(key); //{5}console.log(position + ' - ' + key); //{6}table[position] = value; //{7} };this.get = function (key) {return table[djb2HashCode(key)];};this.remove = function (key) {table[djb2HashCode(key)] = undefined;}this.print = function () {for (var i = 0; i < table.length; ++i) { //{1}if (table[i] !== undefined) { //{2}console.log(i + ": " + table[i]);//{3} }}};}var hash = new HashTable();hash.put('Gandalf', 'gandalf@email.com');hash.put('John', 'johnsnow@email.com');hash.put('Tyrion', 'tyrion@email.com');console.log(hash.get('Gandalf'));console.log(hash.get('Loiane'));/**有时候,一些键会有相同的散列值。不同的值在散列表中对应相同位置的时候,我们称其为冲突。例如,我们看看下面的代码会得到怎样的输出结果**/var hash = new HashTable();hash.put('Gandalf', 'gandalf@email.com');hash.put('John', 'johnsnow@email.com');hash.put('Tyrion', 'tyrion@email.com');hash.put('Aaron', 'aaron@email.com');hash.put('Donnie', 'donnie@email.com');hash.put('Ana', 'ana@email.com');hash.put('Jonathan', 'jonathan@email.com');hash.put('Jamie', 'jamie@email.com');hash.put('Sue', 'sue@email.com');hash.put('Mindy', 'mindy@email.com');hash.put('Paul', 'paul@email.com');hash.put('Nathan', 'nathan@email.com');hash.print()
转载于:https://www.cnblogs.com/vali/p/9603132.html
js数据结构hashMap -----hashMap相关推荐
- java中的数据结构之HashMap学习
java中的数据结构之HashMap学习 equal与hashcode equals与hashcode的源码 为什么hashmap中作为键值的类要重写hashcode和equals方法 Integer ...
- HashMap/HashMap存储/HashMap扩容
HashMap Java 集合,也称作容器,主要是由两大接口 (Interface)派生出来的:Collection 和 Map. Map集合体系: Map集合特点: (1) 键值对存储(key-va ...
- 【从蛋壳到满天飞】JS 数据结构解析和算法实现-AVL树(一)
前言 [从蛋壳到满天飞]JS 数据结构解析和算法实现,全部文章大概的内容如下: Arrays(数组).Stacks(栈).Queues(队列).LinkedList(链表).Recursion(递归思 ...
- JS数据结构与算法_链表
上一篇:JS数据结构与算法_栈&队列 下一篇:JS数据结构与算法_集合&字典 写在前面 说明:JS数据结构与算法 系列文章的代码和示例均可在此找到 上一篇博客发布以后,仅几天的时间竟然 ...
- 【从蛋壳到满天飞】JS 数据结构解析和算法实现-哈希表
前言 [从蛋壳到满天飞]JS 数据结构解析和算法实现,全部文章大概的内容如下: Arrays(数组).Stacks(栈).Queues(队列).LinkedList(链表).Recursion(递归思 ...
- JS 数据结构之旅 :通过JS实现栈、队列、二叉树、二分搜索树、AVL树、Trie树、并查集树、堆
JS 数据结构之旅 栈 概念 栈是一个线性结构,在计算机中是一个相当常见的数据结构. 栈的特点是只能在某一端添加或删除数据,遵循先进后出的原则 实现 每种数据结构都可以用很多种方式来实现,其实可以把栈 ...
- 【从蛋壳到满天飞】JS 数据结构解析和算法实现-堆和优先队列(一)
前言 [从蛋壳到满天飞]JS 数据结构解析和算法实现,全部文章大概的内容如下: Arrays(数组).Stacks(栈).Queues(队列).LinkedList(链表).Recursion(递归思 ...
- Three.js数据结构、导入导出(.toJSON())
Three.js数据结构.导入导出 本文是Three.js电子书的14.1节 通过Three.js模型数据导入导出过程的学习,可以让你对Threejs解析加载外部模型的过程更为了解. Threejs导 ...
- JS数据结构与算法 笔记
JS数据结构与算法笔记 前言:不定时更新说明 1. 栈(Stack) 1.1 基于数组实现栈 1.2 基于对象实现栈 1.3 基于链表实现栈 1.4 栈的简单应用 1.4.1 字符串中的括号匹配问题 ...
- 【从蛋壳到满天飞】JS 数据结构解析和算法实现-集合和映射
前言 [从蛋壳到满天飞]JS 数据结构解析和算法实现,全部文章大概的内容如下: Arrays(数组).Stacks(栈).Queues(队列).LinkedList(链表).Recursion(递归思 ...
最新文章
- c c++常用算法手册(第3版_嵌入式软件开发必看书籍推荐(C/C++/linux/软件)
- 基于Android的校园二手商品交易平台,基于Android校园二手交易网站毕业设计论文.doc...
- 实现SQL Server 2012 镜像
- linux与mysql_Linux与MySQL
- 4.8 迁移数据,添加根路径
- Java中含有泛型的 JSON 反序列化问题
- 20191202_k-中心聚类算法和k-mean算法Python实现
- SQL Server误区30日谈-Day28-有关大容量事务日志恢复模式的误区
- 基于Windows Azure 搭建基于SharePoint 2010 Intranet、Extranet、Internet (2): 创建并发布SharePoint Intranet站点...
- ftp同步软件android,[Android ]FTP/SCP/FTPS客户端AndFTP v4.5专业版 开心版
- 最新喜鹊相亲交友平台微信小程序源码V2.1.2版
- c3p0连接池配置及实现详解
- ios实现读写锁,AFN的实现
- python 数据集中随机选择作为测试集、验证集
- English improvement of IT Test(2014)
- Web端和App端测试区别
- r语言做绘制精美pcoa图_科学网—R语言 PCA PCoA ggplot2 - 靳泽星的博文
- 如何用QT做串口调试助手Qseriaport类的使用
- 深入理解java虚拟机(五)GC垃圾回收-经典垃圾收集器
- 主成分回归预测matlab,科学网—Matlab: princomp() 主成分分析 - 杨建功的博文