字典是一种以键-值对的形式存储数据的数据结构,接下来我们将使用JavaScript实现字典数据结构。

1、定义字典类

由于比较字典数据结构比较简单,就直接上代码好了。

class Dictionary {constructor () {this.data = []}
}
2、add()

此方法用于往字典添加元素,需要接受两个参数,键和值

  add (key, value) {this.data[key] = value}
3、find()

此方法用于通过查找key值返回对应的value

  find (key) {return this.data[key]}
4、remove()

此方法用于删除字典中的键值对(借助JavaScript的delete()函数)

  remove (key) {delete this.data[key]}
5、showAll()

此方法用于显示所有键值对

  showAll () {for(let key in this.data) {console.log(key + '->' + this.data[key])}}
6、count()

此方法用于返回字典中元素的个数,方法中不可以使用length,因为key为字符串的话,length属性失效,比如let arr = []; arr['one'] = 1; arr['two'] = 2;console.log(arr.length);输出为0。

  count () {let n = 0for (let key in this.data) {n++}console.log(n)}
7、pSort()

此方法用于给字典排序,通过排序字典的key即可实现

  pSort () {const keySort = Object.keys(this.data).sort()for (let i = 0; i < keySort.length; i++) {console.log(keySort[i] + '->' + this.data[keySort[i]])}}
8、clear()

此方法用于清空字典

  clear () {for (let key in this.data) {delete this.data[key]}}
9、测试实例
let dic = new Dictionary()
dic.add('Candy', 999)
dic.add('Allen', 666)
dic.add('Scott', 777)
dic.add('Tom', 555)
dic.add('Jack', 333)
console.log('字典中的元素有:')
dic.showAll()
console.log('字典中Tom的值为:')
dic.find('Tom')
console.log('字典中的元素个数为:')
dic.count()
console.log('移除字典中key为Jack的元素后的剩余的元素:')
dic.remove('Jack')
dic.showAll()
console.log('按key排序:')
dic.pSort()
console.log('开始清除所有元素')
dic.clear()
console.log('清除后字典中元素个数为')
dic.count()
10、运行结果

使用node环境运行此js文件,node dictionary.js,可见输出如下:

11、完整源码
class Dictionary {constructor () {this.data = []}add (key, value) {this.data[key] = value}find (key) {return this.data[key]}remove (key) {delete this.data[key]}showAll () {for(let key in this.data) {console.log(key + '->' + this.data[key])}}count () {let n = 0for (let key in this.data) {n++}console.log(n)}pSort () {const keySort = Object.keys(this.data).sort()for (let i = 0; i < keySort.length; i++) {console.log(keySort[i] + '->' + this.data[keySort[i]])}}clear () {for (let key in this.data) {delete this.data[key]}}
}
let dic = new Dictionary()
dic.add('Candy', 999)
dic.add('Allen', 666)
dic.add('Scott', 777)
dic.add('Tom', 555)
dic.add('Jack', 333)
console.log('字典中的元素有:')
dic.showAll()
console.log('字典中Tom的值为:')
dic.find('Tom')
console.log('字典中的元素个数为:')
dic.count()
console.log('移除字典中key为Jack的元素后的剩余的元素:')
dic.remove('Jack')
dic.showAll()
console.log('按key排序:')
dic.pSort()
console.log('开始清除所有元素')
dic.clear()
console.log('清除后字典中元素个数为')
dic.count()

《JavaScript算法与数据结构——字典实现》完结,有错误欢迎指出,五一快乐~

JavaScript算法与数据结构——字典详解相关推荐

  1. 算法与数据结构 - 数组详解

    文章目录 前言 引言 一.场景模拟 二.数组介绍 2.1 什么是线性表 2.2 什么是数组 2.3 数组的特点 2.4 优缺点 三.图话数组 3.1 数组的创建过程 3.2 数据的插入过程 3.3 数 ...

  2. 算法与数据结构 - 排序详解

    目录 前言 引言 业务场景 代码模拟 1. 冒泡排序 1.1 什么是冒泡排序 1.2 图解冒泡 1.3 代码编写 1.4 总结分析 时间复杂度 是否为原地排序 2. 选择排序 2.1 什么是选择排序 ...

  3. 天津理工大学《操作系统》实验二,存储器的分配与回收算法实现,代码详解,保姆式注释讲解

    天津理工大学<操作系统>实验二,存储器的分配与回收算法实现,代码详解,保姆式注释讲解 实验内容 1. 本实验是模拟操作系统的主存分配,运用可变分区的存储管理算法设计主存分配和回收程序,并不 ...

  4. java数据结构-链表详解

    文章目录 1.数据结构-链表详解 1.1单链表 1.1.1单链表节点的尾部添加 1.1.2单链表节点的自动排序添加 1.1.3单链表节点的修改 1.1.4单链表节点的删除 1.2单链表面试题 1.2. ...

  5. 算法经典“钓鱼”问题详解 基于贪心算法 C语言描述

    算法经典"钓鱼"问题详解 基于贪心算法 初始条件 在一条水平路边,有 n 2 ≤ n ≤ 25个钓鱼池,从左到右编号为1.2.3.--.n.小明有H1 ≤ H ≤ 16个小时的空余 ...

  6. 操作系统:基于页面置换算法的缓存原理详解(下)

    概述: 在上一篇<操作系统:基于页面置换算法的缓存原理详解(上)>中,我们主要阐述了FIFO.LRU和Clock页面置换算法.接着上一篇说到的,本文也有三个核心算法要讲解.分别是LFU(L ...

  7. JavaScript 身份证号有效验证详解及实例代码

    这篇文章主要介绍了JavaScript 身份证号有效验证详解及实例代码的相关资料,需要的朋友可以参考下 JavaScript验证身份证号 1 2 3 4 5 6 7 8 9 10 11 12 13 1 ...

  8. 希尔排序基础java代码_java 算法之希尔排序详解及实现代码

    摘要:这篇Java开发技术栏目下的"java 算法之希尔排序详解及实现代码",介绍的技术点是"希尔排序详解.实现代码.希尔排序.Java.实现.代码",希望对大 ...

  9. javascript教程:console.log 详解

    对应WEB程序员,console.log 可以说是神器,极大地方便了程序开发.程序猿:学习了,用Console写日志比alert方便多了. console.log(object[, object, . ...

最新文章

  1. 设计模式——单例模式(Singleton)
  2. 证明黎曼猜想的5页论文已发布!最简洁的解读在这里
  3. 图像去重imagededup
  4. Python:matplotlib绘图
  5. Struts2结果跳转方式
  6. mysql 索引 lt =_MySQL索引相关
  7. PhpYun人才系统 与 Discuz 社区 通过 Ucenter 做会员整合
  8. ug装配绕轴旋转_UG绘制小吊扇模型,建模装配还能运动起来
  9. UVA12015 Google is Feeling Lucky【最值+排序】
  10. ASP.NET Core MVC 2.x 全面教程_ASP.NET Core MVC 18. 基于Claim和Policy的授权 下 - 自定义Policy...
  11. 异贝,通过移动互联网技术,为中小微实体企业联盟、线上链接、线上线下自定义营销方案推送。案例8
  12. VScode安装并设置SVN插件
  13. VB制作控件之图片命令按钮➀
  14. 5个Web前端开发软件,零基础入门完全够用了!
  15. 系统架构设计师与系统分析师历年实体分析与解答下载_架构设计的本质
  16. 点云应用——三维空间边界点排序+机器人轨迹引导(1)
  17. 搭建多节点以太坊私链 10分钟搞定(超简洁)
  18. 天池比赛首次参加记录
  19. 破解魔术的秘密(一)——直面秘密的角落
  20. 钉钉开放平台-小程序开发实战(钉钉小程序客户端)

热门文章

  1. redis面试问题(一)
  2. 《Scikit-Learn与TensorFlow机器学习实用指南》 第01章 机器学习概览
  3. 《开源思索集》一如何更有效地学习开源项目的代码?
  4. Metronic学习之路
  5. JBoss 系列九十六:JBoss MSC - 简介及一个简单演示样例
  6. 实现“Please wait...”效果
  7. 逐浪CMS4.6精彩预告之三:全新会员中心炫目登场
  8. ECharts - 嵌套环形图
  9. Codeforces Round #459 (Div. 2) C 思维,贪心 D 记忆化dp
  10. webform Repeater重复器、地址栏传值、Response