Set用法:set数据类型的元素,必须是唯一的;添加重复的元素不会报错,只是不会生效;
let arr=[1,2,3,4,2,1,2,3,2];
let list=new Set(arr);
console.log(list) //{1, 2, 3, 4} 既不是数组类型 也不是object类型
判断数据类型的几种方法 Object.prototype.toString.call(list) list instanceof Array typeof list
es6新增属性 判断两属性是否相等 Object.is(obj1,obj2) 返回true/false
- 可以用来去重
- 在进行数据转换时 不会进行数据类型的隐式转换;
- Set()实例
- add() 添加元素
- delete() 删除元素
- clear() 清空元素
- has() 判断元素中是否有某个内容
let arr=['add','delete','clear','has'];
let list=new Set(arr);
console.log(list.has('add')) //true
console.log(list.delete('add'),list) // {"delete", "clear", "has"}
console.log(list.clear(),list) //{}
- Set实例遍历
//1:遍历属性名
for(let key of list.keys()){
console.log(key) //add, delete, clear, has
}
//2:遍历属性值
for(let value of list.values()){
console.log(value) //add, delete, clear, has
}
//3:遍历属性名和属性值
for(let [key,value] of list.entries()){
console.log(key,value) //add add, delete delete,clear clear, has has
}
//4: forEach遍历
list.foreach(function(item,key){
console.log(item+" === "+key) //add === add, delete === delete,clear === clear, has === has
})
WeakSet的用法
- let weakList = new weakSet();
- weakSet 和 Set 的区别
- 支持的数据类型不一样
- weakSet只能存储对象
- weakSet中的对象是弱引用,不会检测地址是否被垃圾回收掉;
- weakSet 没有size属性,没有clear方法,不支持遍历;
Map的用法
- Map 的属性名可以是任意数据类型
- Map增加值用set,获取值用get
- Map的两种用法
//第一种写法:
let map=new Map();
let arr=['123'];
map.set(arr,456);
console.log('map',map,map.get(arr)) //{Array(1) => 456} 456
//第二种写法
let map=new Map([['a',123],['b',456]])
console.log(map) //{"a" => 123, "b" => 456}
- map常用的属性值和方法
- map.size 长度
- set设置,get获取
- delete() 删除; clear()清空
WeakMap的用法
- weakMap和map的区别:
- 前者接收的值只能是对象
- 他没有set属性,不能使用clear()
- 不能遍历; 跟weakSet和set的区别一样;
网友评论