09_JavaScript数据结构与算法(九)字典
JavaScript 数据结构与算法(九)字典
字典
字典特点
- 字典存储的是键值对,主要特点是一一对应。
- 比如保存一个人的信息
- 数组形式:
[19,"Tom", 1.65]
,可通过下标值取出信息。 - 字典形式:
{"age": 19, "name": "Tom", "height": 165}
,可以通过key
取出value
。
- 数组形式:
- 此外,在字典中 key 是不能重复且无序的,而 Value 可以重复。
字典和映射的关系
- 有些编程语言中称这种映射关系为字典,如 Swift 中的
Dictonary
,Python 中的dict
。 - 有些编程语言中称这种映射关系为 Map,比如 Java 中的
HashMap
和TreeMap
等。
字典常见的操作
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数据结构与算法(九)字典相关推荐
- python dict 排序原理_第一章Python数据结构和算法(字典排序)
字典排序 问题 你想创建一个字典,并且在迭代或序列化这个字典的时候能够控制元素的顺序. 解决方案 为了能控制一个字典中元素的顺序,你可以使用 collections 模块中的OrderedDict 类 ...
- python字典值的和计算_第一章Python数据结构和算法(字典的运算)
问题 怎样在数据字典中执行一些计算操作(比如求最小值.最大值.排序等等)? 解决方案 考虑下面的股票名和价格映射字典: prices = { 'ACME': 45.23, 'AAPL': 612.78 ...
- C++数据结构与算法(九) 树,优先级队列,最大堆的实现
树: 用来表示具有结构层次的数据,应用: 软件工程技术:模块化技术 根: 子树: 在树中,每个元素都代表一个节点. 树的级: 根是一级,根的孩子是二级,一次往下,有三级,四级... 树的高度(深度): ...
- 数据结构与算法的八股文自述(持续更新)
数据结构与算法的八股文自述 1.1 排序算法 冒泡排序: 冒泡排序只会操作相邻的两个数据.每次冒泡操作都会对相邻的两个元素进行比较,看是否满足大小关系要求.如果不满足就让它俩互换.一次冒泡会让至少一个 ...
- Android版数据结构与算法汇总十二章
Android版数据结构与算法(一):基础简介 https://www.cnblogs.com/leipDao/p/9140726.html Android版数据结构与算法(二):基于数组的实现Arr ...
- 拓扑排序 php,数据结构与算法(周测7-拓扑排序和AOV网络)
判断题 1.AOE图的关键路径就是最长的路径 T F 2.AOE图的权值最大的边(活动)一定是关键活动. T F 两条边相加可能比最大的边还要大. 3.在AOE-网工程中,减少任一关键活动上的权值后, ...
- js计算字典的个数_JS数据结构与算法_集合字典
写在前面 说明:JS数据结构与算法 系列文章的代码和示例均可在此找到 一.集合Set 1.1 集合数据结构 集合set是一种包含不同元素的数据结构.集合中的元素成为成员.集合的两个最重要特性是:集合中 ...
- JavaScript数据结构与算法(2)(集合、字典、哈希表、二叉树、图)(ES6)
注意:原教学视频:JavaScript(ES6)数据结构和算法 | JavaScript数据结构与算法 (都是CoderWhy老师的教学) 原作者(笔记)链接:JavaScript 数据结构与算法 | ...
- 数据结构与算法 学习笔记(8):字典、集合、哈希表
数据结构与算法 学习笔记(8):字典.集合.哈希表 本次文章记录的是和字典.集合.哈希表等数据结构相关的LeetCode算法题(题号与LeetCode对应),包括其构造和使用,针对每一题或一类题给出了 ...
最新文章
- OSGI企业应用开发(二)Eclipse中搭建Felix运行环境
- 深度学习有哪些经典数据集?
- MYSQL 集群的数据节点错误信息归档
- 解决前后端base64编码传递时的中文乱码问题
- 启动物料帐后不可更改物料价格的处理方法
- 快速上手用Python搭建自己的第一个pyecharts图表
- 可逆神经网络(Invertible Neural Networks)详细解析:让神经网络更加轻量化
- RocketMQ的发展历史
- LeetCode—213. 打家劫舍 II
- struct/class的数据对齐---简单解析
- 前端学习(1159):对象结构02
- docker 获取宿主机ip_Docker基础修炼6——网络初探及单机容器间通信
- 分分钟甩Word几条街,Python编辑公式竟可以如此简单,赶紧收藏!!
- 原生js实现三级联动
- docker镜像编码注意事项
- 苹果CMSV10如何打包麻花影视APP教程
- 森林笔记之Qt:消息对话框(消息盒子)
- 1.6 airtest控制MUMU模拟器
- 酷狗音乐车载Android版,酷狗音乐车载版
- Java能够做哪些工作?这7个Java开发方向你知道几个?