js数据结构与算法——字典与散列表

   <script>

        //创建字典
        function Dictionary(){
            var items = {};

            this.set = function(key,value){
                //向字典添加一个新的项
                items[key] = value;
            }

            this.remove = function(key){
                //从字典移除一个值
                if(this.has(key)){
                    delete items[key];
                    return true;
                }
                return false;
            }

            this.has = function(key){
                //判断值是否在字典中,返回布尔值
                return key in items;
            }

            this.get = function(key){
                //通过键值查找特定的数值并返回
                return this.has(key) ? items[key] : undefined;
            }

            this.clear = function(){
                //清空字典
                items = {};
            }

            this.size = function(){
                //返回字典的元素数量
                return Object.keys(items).length;
            }

            this.keys = function(){
                //返回字典的键值名
                return Object.keys(items);
            }

            this.values = function(){
                //返回一个包含字典中所有值的数组
                var values = [];
                for(var key in items){
                    if(this.has(key)){
                        values.push(items[key])
                    }
                }
                return values;
            }

            this.getItems = function(){
                //返回items
                return items;
            }

        }

        var dictionary = new Dictionary();
        dictionary.set(‘Gandalf‘, ‘gandalf@email.com‘);
        dictionary.set(‘John‘, ‘johnsnow@email.com‘);
        dictionary.set(‘Tyrion‘, ‘tyrion@email.com‘);
        console.log(dictionary.getItems());
    </script>

原文地址:https://www.cnblogs.com/huangmin1992/p/10415337.html

时间: 2024-10-09 22:51:24

js数据结构与算法——字典与散列表的相关文章

数据结构与算法分析-分离链接散列表的实现

#include<stdio.h> #include<math.h> typedef char* ElementType; typedef unsigned int Index; #define MinTableSize 15 struct ListNode; typedef struct ListNode *Position; struct HashTbl; typedef struct HashTbl *HashTable; HashTable InitializeTable(

数据结构与算法分析-开放定址散列表的实现

#include<stdio.h> #include"fatal.h" typedef char* ElementType; typedef unsigned int Index; typedef Index Position; struct HashTbl; typedef struct HashTbl *HashTable; HashTable InitializeTable(int TableSize); void DestroyTable(HashTable H);

js数据结构与算法存储结构

数据结构(程序设计=数据结构+算法) 数据结构就是关系,没错,就是数据元素相互之间存在的一种或多种特定关系的集合. 传统上,我们把数据结构分为逻辑结构和物理结构. 逻辑结构:是指数据对象中数据元素之间的相互关系,也是我们今后最需要关注和讨论的问题. 物理结构:是指数据的逻辑结构在计算机中的存储形式. 常用的数据结构有: 数组,队列(queue),堆(heap),栈(stack),链表(linked list ),树(tree),图(graph)和散列表(hash) 栈(stack):运算只在表的

数据结构(十二)散列表

定义 以下简称hahs 应用场景 适合查找与给定值相同的数据,不适合做范围查找,1对多映射查找 问题 冲突,散列表的理论依据是每个不同的关键字通过散列算法得到的结果都是唯一的,而现实中有可能出现几个结果相同的关键字. hash算法 构造一个散列算法考虑几个方面 直接定址法 按如下公式计算出关键字的hash值,当原始的key不重复,则得到的hash值就不会冲突 数字分析法 抽取关键字的一部分作为hash值 例如手机号,一般可以取后4位或者后4位的变形作为hash值,(公司内部场景) 平方取中法 折

数据结构---哈希表(散列表)

我们在Java容器中谈到:有哈希表(也称为散列表)支持的HashMap.LinkedHashSet等都具有非常高的查询效率.这其中就是Hash起的作用.顺序查找的时间复杂度为O(N) ,二分查找和查找树的时间复杂度为O(logN),而 哈希表的时间复杂度为O(1) .不过这只是理想状态,实际并不那么完美. 1.哈希表的概念和思想 哈希表是唯一的专用于集合的数据结构.可以以常量的平均时间实现插入.删除和查找. 哈希表的思想是:用一个与集合规模差不多大的数组来存储这个集合,将数据元素的关键字映射到数

字典:散列表、散列字典、关键字列表、集合与结构体

字典 散列表和散列字典都实现了Dict的行为.Keyword模块也基本实现了,不同之处在于它支持重复键. Eunm.into可以将一种类型的收集映射转化成另一种. defmodule Sum do def values(dict) do dict |> Dict.values |> Enum.sum end end hd = [ one: 1, two: 2, three: 3 ] |> Enum.into HashDict.new IO.puts Sum.values(hd) #=&g

第三章:数据结构与算法javascript描述: 列表

在日常生活中,人们经常使用列表:待办事项列表,购物清单,十佳榜单,最后十名榜单等.计算机也在使用列表,尤其是列表中元素保存的是太多时.当不需要一个很长的序列中查找元素,或对其进行排序时,列表显得尤为有用.反之,如果数据结构非常复杂,列表的作用就没有那么大了. 本章展示了如果创建一个简单的列表类,我们首先给列表给出抽象的数据类型定义,然后描述如何实现抽象数据类型(ADT),最后,分析几个列表适合解决的实际问题. 一,列表的抽象数据类型定义 为了设计列表的抽象数据类型,需要给出列表的定义,包括列表应

【4】学习JS 数据结构与算法笔记

第一章 JS 简介 1. 环境搭建的三种方式 1. 下载浏览器 2. 使用 Web 服务器 ( XAMPP ) 3. 使用 Node.js 搭建 Web 服务器 4. 代码地址>> 2. JS 语法

js数据结构与算法——集合

<script> function Set(){ var items = {};//使用对象表示集合,因为js对象不允许一个键指向两个不同的值,保证集合里面的匀速唯一性 this.add = function(value){ //向集合添加一个新的项 if(!this.has(value)){ items[value] = value; return true; } return false; } this.remove = function(value){ //从集合移除一个值 if(thi