ES6中的Set、Map数据结构
Map、Set都是ES6新的数据结构,他们都是新的内置构造函数。也就是说typeof的结果,多了两个。
他们是什么:
Set是不能重复的数组。
Map是可以任何东西当做键的对象;
ES6 提供了新的数据结构 Set。它类似于数组,但是Set成员的值都是唯一的,没有重复的值。
let m = new Set(); m.add(1); m.add(2); m.add(3); m.add(3); m.add(3); m.add(4); m.add(5); console.log(m);
集合中添加数据用add()方法,会自动过滤已经有的元素。
let m = new Set([1,1,1,1,2,2,2,2,3,3,3]); console.log(m);
最快的数组去重的方法:
let m = new Set([1,1,1,1,2,2,2,2,3,3,3]); console.log(m);
let m = new Set([1,2,3,4,5]); console.log(m.size); console.log(m.has(4)); console.log(m.delete(4)); console.log(m);
集合的关注点是元素在里面,而不关注顺序,所以不提供枚举某项的API。但是可以转为数组[...m]
ES6 提供了 Map 数据结构。它类似于对象,也是键值对的集合,但是“键”的范围不限于字符串,各种类型的值(包括对象)都可以当作键。也就是说,Object 结构提供了“字符串—值”的对应,Map结构提供了“值—值”的对应,是一种更完善的 Hash 结构实现。如果你需要“键值对”的数据结构,Map 比 Object 更合适。
let m = new Map(); const o = {"a" : 1 , "b" : 2}; m.set(o , 123); m.set(2 , 456); console.log(m);
使用get来得到元素,key是区分类型的。
console.log(m.get(o));
本人的小小理解~~~