es6新增集合类型set与map
#set
set是ES6里面提供的一种新的数据结构 它类似于数组 但是他里面所有的成员都是唯一的
这里我们会发现相同的数据已经被去除了,可以用来对数组去重,但是大家得注意这个是set类型的
所以
这样就是一个完整的set去重数组了
在set传参过程中大家需要注意Set创建时 传递的参数必须是可以进行遍历的 否则就会报错(typeError)数组 伪数组 都可以作为参数
接下来我们具体来看一下set的方法
1.add 添加到set的最后一位
2.has 判断set集合中是否存在该元素,返回值为布尔类型
let set2 = new Set(); //创建一个没有任何内容的set集合
//具有初始化数值的set集合
set2.add("Q");
set2.add("q");
set2.has("Q");
console.log(set1);
console.log(set2);
console.log(set2.has("Q"));
3.delete 删除某个数据不传参 或者穿的参数为不存在的值 那么就不删除,
你会发现Q已经没了
4.clear 清空整个set集合里面的内容
这里我们发现set被清空,且我上面删除一个不存在的Z删除失败
5.size 获取set集合中元素数量 只读属性 不能进行赋值。
let set2 = new Set("YIDIANBUYAOCHONGFUYOU");
for(let i =0 ;i<set2.size;i++){
console.log(set2.has(i));
}
for(let item of set2){
console.log(item);
}
讲完set之后我们来讲map,map跟set的用法相似
map
普通对象存储的缺点 :
- 键名只能使用字符串
- 对象的属性和原型上的方法或者属性发生冲突
ES6引入map数据结构 特点 : 键名不能重复 可以以其他数据类型作为键名
var mp = new Map();
var arr = [12, 13, 15];
// 给map对象设置属性 使用set方法 键名可以为复杂数据类型 要获取使用get
mp.set(arr, "我是一个数组");
console.log(mp);
console.log(mp.get(arr));
// Map作为构造函数 可以接受一个数组作为参数 该数组的元素必须是表示一对键值对的数组
var mp1 = new Map([["name", "jack"], ["age", "13"], ["girlFriend","rose"]]);
// var mp1 = new Map(["name", "jack", "age", "13", "girlFriend","rose"]); // 报错
1.size 返回 Map 结构的成员总数。
2.set (key, value) 设置键名key对应的键值为value,然后返回整个 Map 结构。如果key已经有值,则键值会被更新,否则就新生成该键。
3.get(key) 读取key对应的键值,如果找不到key,返回undefined。
4.has(key) 返回一个布尔值,表示某个键是否在当前 Map 对象之中。
5.delete(key) 删除某个键,返回true。如果删除失败,返回false。
6.clear() 清空整个map集合
let obj = {
name:"xjs",
age:18
}
let map1 = new Map([[obj,"1"],["b",2],["c",3]]);
console.log(map1);
let text = map1.get(obj.name);
console.log(text);
map1.forEach((item,index,s) =>{
console.log(item,index,s);
})
如果对本章不懂,请关注私聊谢谢!