Set
Set 这种数据结构类似于数组,不同的是,Set 成员的值都是唯一的,不能有重复的值
Set 本身是一个构造函数,用 new Set()生成
const arr = [ 1, 1, 2, 2, 3, 3 ];
const set = new Set(arr);
console.log(set); // 1, 2, 3
Set 结构的实例具有的属性:
- Set.prototype.constructor: 构造函数,默认就是 Set 函数
- Set.prototype.size: 返回 Set 实例的成员总数
Set 实例的操作方法:
- add(value) :添加某个值,返回 Set 结构本身
- delete(value) :删除某个值,返回一个布尔值,表示删除是否成功
- has(value) :返回一个布尔值,表示该值是否为 Set 成员
- clear() :清除所有成员,没有返回值
下面为实例化 Set 并使用其操作方法:
const set = new Set();
set.add(1).add(1).add(2).add(3);
console.log(set.size); // 3
console.log(set); // 1, 2, 3
set.delete(2);
console.log(set); // 1, 3
set.has(3);
console.log(set); // true
set.clear();
console.log(set); // Set(0){}
由于 Set 结构的成员的值是唯一的,所以可以利用 Set 结构进行数组去重,方法如下:
Array.from( new Set (array) );
先将数组传进 Set 结构中进行去重,再使用 Array.from( ) 将Set 结构转化为数组
另外,在 Set 结构中,NaN 和 NaN 是相等的,因为不能给 Set 中添加两个 NaN;但是,可以给 Set 中添加两个空对象{},表明两个对象总是不相等的
Map
Map 数据结构类似于对象,是键值对的集合,但是“键”的范围不限于字符串形式,各种类型(包括对象)的值都可以当做键,是一种更完善的 Hash 结构实现。如果你需要“键值对”的数据结构,那么 Map 比 Object 更合适。
Map 结构本身也是一个构造函数,用 new Map( ) 生成
Map 结构的实例有以下属性和方法:
size 属性:返回 Map 结构的成员总数
set 方法:set (key, value),设置键名
key
对应的键值为value
,然后返回整个 Map 结构。如果key
已经有值,则键值会被更新,否则就新生成该键get 方法:get (key),读取 key 对应的键值,如果找不到
key
,返回undefined
has 方法:has(key),返回一个布尔值,表示某个键是否在当前 Map 对象之中
delete 方法:delete(key),删除某个键,返回
true
。如果删除失败,返回 falseclear方法:clear( ),清除所有成员,没有返回值