ES6:Set和Map数据结构
Set数据结构
Set结构类似数组,但它的所有成员的值是唯一的,没有重复值。Set本身是一个构造函数,用来生成Set数据结构。
Set实例有以下属性:
Set.prototype.constructor
: 构造函数,默认为Set函数
Set.prototype.size
: 返回Set实例的成员总数
Set实例的四个操作方法:
add(value)
:添加某个值,返回Set函数本身,重复添加同一个值无效
delete(value)
:删除某个值,返回布尔值,判断该值是否删除成功
has(value)
:返回布尔值,判断参数是否为该成员
clear()
:清除所有成员,无返回值
Set实例的四种遍历方法:
keys()
:返回一个键名的遍历器
values()
:返回一个键值的遍历器
entries()
:返回一个键值对的遍历器
forEach()
:使用回调函数遍历每个成员
PS:Array.from方法可以将Set结构转为数组。 若要去除数组中的重复属性,可先用Set结构,然后转为数组结构。Set实例默认可遍历,遍历方法为values。 Set.prototype[Symbol.iterator] === Set.prototype.values
Map数据结构
Map结构类似对象,也是键值对的集合。但键的范围不限于字符串.
Map实例有以下属性:
size属性: 返回Map实例的成员总数
let map = new Map();
map.set('foo', true).set('bar', false);
map.size // 2
Map结构的五种操作方法
set(key, value)
:设置key所对应的值,然后返回整个Map结构, 如果key已经有值,则会覆盖掉前面的值。 因为返回的是Map本身,故可以使用链式写法( let map = new Map.set(1, 'a').set(2, 'b'); )
get(key)
:返回key所对应的键值,如果找不到key,则返回undefined
has(key)
:返回一个布尔值,判断参数是否为该成员
delete(key)
:删除键,返回一个布尔值,判断是否成功删除
clear()
:清除所有成员,无返回值
Map结构的四种遍历方法
keys()
:返回一个键名的遍历器
values()
:返回一个键值的遍历器
entries()
:返回一个键值对的遍历器
forEach()
:遍历所有Map成员
PS:Map转化为数组,通过使用扩展运算符(...)
let map = new Map().set(true, 7).set({foo: 3}, ['acb']);
[...map] // [[true, 7], [{foo: 3}, ['acb']]]
数组转化为Map,将数组传入Map的构造函数即可
let map = new Map([数组])
Map转为对象,前提,Map中的所有键均为String型