JavaScript 数据结构与算法(九)字典

字典

字典特点

  • 字典存储的是键值对,主要特点是一一对应
  • 比如保存一个人的信息
    • 数组形式:[19,"Tom", 1.65],可通过下标值取出信息。
    • 字典形式:{"age": 19, "name": "Tom", "height": 165},可以通过 key 取出 value
  • 此外,在字典中 key 是不能重复且无序的,而 Value 可以重复。

字典和映射的关系

  • 有些编程语言中称这种映射关系为字典,如 Swift 中的 Dictonary,Python 中的 dict
  • 有些编程语言中称这种映射关系为 Map,比如 Java 中的 HashMapTreeMap 等。

字典常见的操作

  • set(key,value) 向字典中添加新元素。
  • remove(key) 通过使用键值来从字典中移除键值对应的数据值。
  • has(key) 如果某个键值存在于这个字典中,则返回 true,反之则返回 false
  • get(key) 通过键值查找特定的数值并返回。
  • clear() 将这个字典中的所有元素全部删除。
  • size() 返回字典所包含元素的数量。与数组的 length 属性类似。
  • keys() 将字典所包含的所有键名以数组形式返回。
  • values() 将字典所包含的所有数值以数组形式返回。

字典封装

代码实现

// 字典结构的封装
export default class Map {constructor() {this.items = {};}// has(key) 判断字典中是否存在某个 keyhas(key) {return this.items.hasOwnProperty(key);}// set(key, value) 在字典中添加键值对set(key, value) {this.items[key] = value;}// remove(key) 在字典中删除指定的 keyremove(key) {// 如果集合不存在该 key,返回 falseif (!this.has(key)) return false;delete this.items[key];}// get(key) 获取指定 key 的 value,如果没有,返回 undefinedget(key) {return this.has(key) ? this.items[key] : undefined;}// 获取所有的 keykeys() {return Object.keys(this.items);}// 获取所有的 valuevalues() {return Object.values(this.items);}// size() 获取字典中的键值对个数size() {return this.keys().length;}// clear() 清空字典中所有的键值对clear() {this.items = {};}
}

代码测试

const map = new Map();// set() 测试
map.set("name", "XPoet");
map.set("age", 18);
map.set("email", "i@xpoet.cn");
console.log(map); // {items: {name: "XPoet", age: 18, email: "i@xpoet.cn"}}// has() 测试
console.log(map.has("name")); //--> true
console.log(map.has("address")); //--> false// remove() 测试
map.remove("name");
console.log(map); // {age: 18, email: "i@xpoet.cn"}// get() 测试
console.log(map.get("age")); //--> 18// keys() 测试
console.log(map.keys()); //--> ["age", "email"]// values() 测试
console.log(map.values()); //--> [18, "i@xpoet.cn"]// size() 测试
console.log(map.size()); //--> 2

09_JavaScript数据结构与算法(九)字典相关推荐

  1. python dict 排序原理_第一章Python数据结构和算法(字典排序)

    字典排序 问题 你想创建一个字典,并且在迭代或序列化这个字典的时候能够控制元素的顺序. 解决方案 为了能控制一个字典中元素的顺序,你可以使用 collections 模块中的OrderedDict 类 ...

  2. python字典值的和计算_第一章Python数据结构和算法(字典的运算)

    问题 怎样在数据字典中执行一些计算操作(比如求最小值.最大值.排序等等)? 解决方案 考虑下面的股票名和价格映射字典: prices = { 'ACME': 45.23, 'AAPL': 612.78 ...

  3. C++数据结构与算法(九) 树,优先级队列,最大堆的实现

    树: 用来表示具有结构层次的数据,应用: 软件工程技术:模块化技术 根: 子树: 在树中,每个元素都代表一个节点. 树的级: 根是一级,根的孩子是二级,一次往下,有三级,四级... 树的高度(深度): ...

  4. 数据结构与算法的八股文自述(持续更新)

    数据结构与算法的八股文自述 1.1 排序算法 冒泡排序: 冒泡排序只会操作相邻的两个数据.每次冒泡操作都会对相邻的两个元素进行比较,看是否满足大小关系要求.如果不满足就让它俩互换.一次冒泡会让至少一个 ...

  5. Android版数据结构与算法汇总十二章

    Android版数据结构与算法(一):基础简介 https://www.cnblogs.com/leipDao/p/9140726.html Android版数据结构与算法(二):基于数组的实现Arr ...

  6. 拓扑排序 php,数据结构与算法(周测7-拓扑排序和AOV网络)

    判断题 1.AOE图的关键路径就是最长的路径 T F 2.AOE图的权值最大的边(活动)一定是关键活动. T F 两条边相加可能比最大的边还要大. 3.在AOE-网工程中,减少任一关键活动上的权值后, ...

  7. js计算字典的个数_JS数据结构与算法_集合字典

    写在前面 说明:JS数据结构与算法 系列文章的代码和示例均可在此找到 一.集合Set 1.1 集合数据结构 集合set是一种包含不同元素的数据结构.集合中的元素成为成员.集合的两个最重要特性是:集合中 ...

  8. JavaScript数据结构与算法(2)(集合、字典、哈希表、二叉树、图)(ES6)

    注意:原教学视频:JavaScript(ES6)数据结构和算法 | JavaScript数据结构与算法 (都是CoderWhy老师的教学) 原作者(笔记)链接:JavaScript 数据结构与算法 | ...

  9. 数据结构与算法 学习笔记(8):字典、集合、哈希表

    数据结构与算法 学习笔记(8):字典.集合.哈希表 本次文章记录的是和字典.集合.哈希表等数据结构相关的LeetCode算法题(题号与LeetCode对应),包括其构造和使用,针对每一题或一类题给出了 ...

最新文章

  1. OSGI企业应用开发(二)Eclipse中搭建Felix运行环境
  2. 深度学习有哪些经典数据集?
  3. MYSQL 集群的数据节点错误信息归档
  4. 解决前后端base64编码传递时的中文乱码问题
  5. 启动物料帐后不可更改物料价格的处理方法
  6. 快速上手用Python搭建自己的第一个pyecharts图表
  7. 可逆神经网络(Invertible Neural Networks)详细解析:让神经网络更加轻量化
  8. RocketMQ的发展历史
  9. LeetCode—213. 打家劫舍 II
  10. struct/class的数据对齐---简单解析
  11. 前端学习(1159):对象结构02
  12. docker 获取宿主机ip_Docker基础修炼6——网络初探及单机容器间通信
  13. 分分钟甩Word几条街,Python编辑公式竟可以如此简单,赶紧收藏!!
  14. 原生js实现三级联动
  15. docker镜像编码注意事项
  16. 苹果CMSV10如何打包麻花影视APP教程
  17. 森林笔记之Qt:消息对话框(消息盒子)
  18. 1.6 airtest控制MUMU模拟器
  19. 酷狗音乐车载Android版,酷狗音乐车载版
  20. Java能够做哪些工作?这7个Java开发方向你知道几个?

热门文章

  1. 公司注册地址同区变更和跨区变更准备材料是一样的吗
  2. Cannot initialize a variable of type 'Stu *' with an rvalue of type 'void *'
  3. codeVS 3116 高精度练习之加法
  4. word中如何在表格上方加入一行以及英文如何设置自动断字
  5. 链路分析(Link analysis)
  6. 怎么让静态照片动起来,教程来咯!
  7. 2021级天梯赛 2.1-2.4
  8. 人生苦短,该是及时行乐?或是该苦尽甘来?
  9. Git建立远程/本地服务器和git命令的使用
  10. scipy.stats 用法