JavaScript学习笔记六:Map和Set
来源:互联网 发布:linux中mount命令 编辑:程序博客网 时间:2024/05/18 12:36
JavaScript教程传送门
JavaScript的默认对象表示方式{}
可以视为其他语言中的Map
或Dictionary
的数据结构,即一组键值对。
但是JavaScript的对象有个小问题,就是键必须是字符串。但实际上Number或者其他数据类型作为键也是非常合理的。
为了解决这个问题,最新的ES6规范引入了新的数据类型Map
。
Map
Map
是一组键值对的结构,具有极快的查找速度。
举个例子,假设要根据考试的排名查找对应的同学的名字,如果用Array
实现,需要两个Array
:
var ranks = [1, 2, 3];var names = ['Michael', 'Bob', 'Tracy'];
给定一个名次,要查找对应的同学名字,就先要在ranks中找到对应的位置,再从names取出对应的成绩,Array
越长,耗时越长。
如果用Map
实现,只需要一个“名次”-“名字”的对照表,直接根据名次查找同学名字,无论这个表有多大,查找速度都不会变慢。用JavaScript写一个Map
如下:
var m = new Map([[1, 'Michael'], [2, 'Bob'], [3, 'Tracy']]);m.get(1); // 'Michael'
初始化Map
需要一个二维数组,或者直接初始化一个空Map
。Map
具有以下方法:
var m = new Map(); // 空Mapm.set('Adam', 67); // 添加新的key-valuem.set('Bob', 59);m.has('Adam'); // 是否存在key 'Adam': truem.get('Adam'); // 67m.delete('Adam'); // 删除key 'Adam'm.get('Adam'); // undefined
由于一个key只能对应一个value,所以,多次对一个key放入value,后面的值会把前面的值冲掉:
var m = new Map();m.set('Adam', 67);m.set('Adam', 88);m.get('Adam'); // 88
Set
Set
和Map
类似,也是一组key的集合,但不存储value。由于key不能重复,所以,在Set
中,没有重复的key。
要创建一个Set
,需要提供一个Array
作为输入,或者直接创建一个空Set
:
var s1 = new Set(); // 空Setvar s2 = new Set([1, 2, 3]); // 含1, 2, 3
重复元素在Set
中自动被过滤:
var s = new Set([1, 2, 3, 3, '3']);s; // Set {1, 2, 3, "3"}
通过add(key)
方法可以添加元素到Set
中,可以重复添加,但不会有效果:
var s = new Set([1, 2, 3]);s.add(4);s; // Set {1, 2, 3, 4}s.add(4);s; // Set {1, 2, 3, 4}
通过delete(key)
方法可以删除元素:
var s = new Set([1, 2, 3]);s; // Set {1, 2, 3}s.delete(3);s; // Set {1, 2}
0 0
- JavaScript学习笔记六:Map和Set
- JavaScript学习笔记 CH.2 SEC.7 map和set
- ES6学习笔记(六)--set,map数据结构和for...of遍历
- Javascript Map和Set
- JavaScript---map和set
- ES6学习笔记: Set和Map
- Android笔记六.List+Set+Map
- JavaScript--Map和Set介绍
- JavaScript --Map和Set, Iterable
- JavaScript之Set 和 Map
- javascript学习(五)— Map和Set
- C++ STL关联容器 set和map学习笔记
- ES6学习笔记(五)Set和Map数据结构
- ECMAScript 6 学习笔记----set和map数据结构
- C++学习笔记13 STL Set和Map
- Javascript 学习 笔记六
- JavaScript学习笔记六
- vector,map和set笔记
- CentOS7下三步安装单点OpenStack【KVM、VMwareOK】
- 什么是数据持久化?
- 替换空格
- 第二部分:进程管理
- UITableViewCell 选中时的颜色设置
- JavaScript学习笔记六:Map和Set
- mssql 两个日期之间序列
- 【Linux】graphchi-cpp 程序运行说明
- Android 点9图片 Can't have more than one marked region 解决方法
- js正则表达式语法
- 第三部分:内存管理
- 代码与标准如何对应
- 面试笔记----------HashMap排序
- PLL与DLL的区别