Map
Map
对象保存键值对。具有极快的查找速度
var m = new Map([['sharon', 20], ['Bob', 31], ['Tracy', 16]]);
m.get('sharon'); // 20
初始化Map
需要一个二维数组,或者直接初始化一个空Map
。Map
具有以下方法:
var m = new Map(); // 空Map
m.set('Adam', 67); // 添加新的key-value
m.set('Bob', 59);
m.has('Adam'); // 是否存在key 'Adam': true
m.get('Adam'); // 67
m.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 对象存储的值总是唯一的,所以需要判断两个值是否恒等。有几个特殊值需要特殊对待:
- +0 与 -0 在存储判断唯一性的时候是恒等的,所以不重复;
- undefined 与 undefined 是恒等的,所以不重复;
- NaN 与 NaN 是不恒等的,但是在 Set 中只能存一个,不重复。
Set对象方法:
方法 | 描述 |
add | 添加某个值,返回Set对象本身 |
clear | 删除所有的键/值对,没有返回值 |
delete | 删除某个键,返回true。如果删除失败。返回false |
forEach | 对每个元素执行指定操作。 |
has | 返回一个Boolean,表示某个键是否在当前Set对象中。 |
要创建一个Set
,需要提供一个Array
作为输入,或者直接创建一个空Set
:
let mySet = new Set();
let mySet2 = new Set([23,45,67]);
通过delete(key)
方法可以删除元素:
var s = new Set([5,7,9]);
console.log(s); // {5,7,9}
s.deleter(7);
console.log(s); // {5,9}
Set 对象作用
数组去重
var s = new Set([2,5,8,9,2,8]);
[...s]; // [2,5,8,9]
并集
var a = new Set([2,3,6]);
var b = new Set([3,6,9,7]);
var arr = new Set([...a,...b]); // {2,3,6,9,7}
交集
var a = new Set([2,3,6]);
var b = new Set([3,6,9,7]);
var arr = new Set([...a].filter(x => b.has(x))); // {3,6}
差集
var a = new Set([2,3,6]);
var b = new Set([3,6,9,7]);
var arr = new Set([...a].filter(x => !b.has(x))); // {2}