es6 学习笔记 Set 和Map数据结构

发布时间:2019-08-09 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了es6 学习笔记 Set 和Map数据结构脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。

Set

定义:类似于数组,但是成员的值都是唯一的,没有重复的值。

const ITems = new Set([1, 2, 3, 4, 5, 5, 5, 5]);
items  // Set(5) {1, 2, 3, 4, 5}
[...items] // [1,2,3,4,5]

Set实例的属性

Set.prototype.constructor:构造函数,默认就是Set函数。
Set.prototype.size:返回Set实例的成员总数。

Set实例的方法

add(value):添加某个值,返回 Set 结构本身。
delete(value):删除某个值,返回一个布尔值,表示删除是否成功。
has(value):返回一个布尔值,表示该值是否为Set的成员。
clear():清除所有成员,没有返回值。

转换 Set结构转数组

const items = new Set([1, 2, 3, 4, 5]);
const array = Array.From(items);

遍历操作

keys():返回键名的遍历器 (Set结构键名、键值一样)
values():返回键值的遍历器
entries():返回键值对的遍历器
foreach():使用回调函数遍历每个成员

用途
1.对数组去重
2.为2个数组,实现并集,交集,差集;

Map

定义:类似于对象,也是键值对的集合,但是“键”的范围不限于字符串,各种类型的值(包括对象)都可以当作键。
@L_126_12@ 结构提供了“字符串—值”的对应,Map 结构提供了“值—值”的对应,是一种更完善的 Hash 结构实现。

// 作为构造函数,Map 也可以接受一个数组作为参数。该数组的成员是一个个表示键值对的数组。 
const map11 = new Map([
  ['F', 'no'],
  ['T',  'yes'],
]);
map11   // Map(2) {"F" => "no", "T" => "yes"}

let map = new Map();
map.set('foo', true);
map.set('bar', false);
map   // map(2) {"foo" => true, "bar" => false}

Map 的键实际上是跟内存地址绑定的,只要内存地址不一样,就视为两个键。这就解决了同名属性碰撞(clash)的问题,我们扩展别人的库的时候,如果使用对象作为键名,就不用担心自己的属性与原作者的属性同名。
即:基本数据类型的键同名,为一个键;引用的则不是类型

MaP实例的属性

Set.PRototyPE.constructor:构造函数,默认就是Set函数。
Set.prototype.size:返回Map实例的成员总数。

Map实例的方法

set(key, value): 设置键名key对应的键值为value,然后返回整个 Map 结构
get(key): get方法读取key对应的键值,如果找不到key,返回undefined。
delete(value):删除某个值,返回一个布尔值,表示删除是否成功。
has(value):返回一个布尔值,表示该值是否在Map对象中。
clear():清除所有成员,没有返回值。

遍历方法

Map 结构原生提供三个遍历器生成函数和一个遍历方法。

keys():返回键名的遍历器。
values():返回键值的遍历器。
entries():返回所有成员的遍历器。
forEach():遍历 Map 的所有成员。

转换

Map结构转数组

const map = new Map([
  [1, 'one'],
  [2, 'two'],
  [3, 'three'],
]);

[...map.keys()]
// [1, 2, 3]

[...map.values()]
// ['one', 'two', 'three']

[...map.entries()]
// [[1,'one'], [2, 'two'], [3, 'three']]

[...map]
// [[1,'one'], [2, 'two'], [3, 'three']]

Array-->;map:将数组传入 Map 构造函数,就可以转为 Map。

new Map(arry);

Map-->对象:方法:遍历map,对空对象逐一添加

对象-->Map:方法:遍历对象,对空map逐一添加
Map-->JSON 分为转对象JSON 还是数组JSON。方法:先转成对象,在JSON.sringify();
JSON-->Map 方法:JSON-->Object--->Map或 JSON-->Array-->Map

其他

Map和Set 均可以结合数组的map()和filter()方法。

脚本宝典总结

以上是脚本宝典为你收集整理的es6 学习笔记 Set 和Map数据结构全部内容,希望文章能够帮你解决es6 学习笔记 Set 和Map数据结构所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。