Set数据结构(集合)
ES6提供了新的数据结构,它类似于数组,但是成员值都是唯一的,没有重复的值
例如电商网站中的搜索功能,用户搜索完成之后网站会记录用户搜索的关键字,方便用户下次直接点击历史关键字就可以搜索了,搜索历史关键字的存储就可以使用Set数据结构。
Set本身是一个构造函数,用来生成Set数据结构
const s= new Set();
Set函数可以接受一个数组作为参数,用来初始化
const set new Set([1,2,3,4,4]);
当向Set数据结构中传递初始值时,会将重复的值过滤掉
const s1 = new Set(["a","a","b","b"]);
console.log(s1.size);//2
const ary = [...s1];
console.log(ary)
Set的方法:
操作方法:
- add(value):添加某个值,返回Set结构本身
- delete(value):删除某个值,返回一个布尔值,表示删除成功
- has(value):返回一个布尔值,表示该值是否为Set的成员
- clear():清除所有成员,没有返回值
遍历方法:
- keys():返回键名
- values():返回键值
- entries():返回键值对
- forEach():使用回调函数,遍历每个成员
const s2 = new Set();
//向set结构中添加值,使用add方法,可以使用链式结构
s2.add('q').add('e');
console.log(s2.size);// 2
//从set结构中删除值,用delete方法
const r1=s2.delete('a');
console.log(s2.size);
console.log(r1);// true 如果删除一个不存在的值则返回false
//判断某一个值是否是set数据结构中的成员,使用has
const r2=s2.has('a');
console.log(r2);//true
//清空set数据结构中的值,使用clear方法
s2.clear();
console.log(s2.size);//0
从Set数据结构中取值,forEach
const s3=new Set(['a','b','c']);
s3.forEach(value=>{
console.log(value)
})
Map数据结构(字典)
Map对象保存键值对,任何值(对象或者原始值)都可以作为一个键或者一个值。构造函数Map可以接受一个数组作为参数
Map和Object的区别:
- 一个Object的键只能是字符串或者Symbols,但是一个Map的键可以是任意的值
- Map中的键值是有序的,而添加到对象中的键则不是
- Map的键值对个数可以从size属性中获取,而Object的键值对个数只能手动计算
- Object都有自己的原型,原型链上的键名有可能和自己在对象上设置的键名产生冲突
Map对象的属性
size:返回Map对象中所包含的键值对的个数
Map的操作方法:
- set(key,val):向Map中添加新元素
- get(key):通过键值查找特定的数值并返回
- has(key):判断Map对象中是否有key所对应的值,有则返回true,否则返回false
- delete(key):通过键值从Map中移除对应的数据
- clear():将这个Map中的所有元素删除
遍历方法:
- keys():返回键名
- values():返回键值
- entries():返回键值对
- forEach():使用回调函数,遍历每个成员