01 Set
let setArr=new Set(["牛奶","可乐","绿茶","冰红茶"])
console.log(setArr)
打印出来的结果不是数组,而是set的数据类型
接下来我们对这个数组进行增删改
增:add
注意:数组增加是使用push,但是我们这里是使用add
let setArr=new Set(["牛奶","可乐","绿茶","冰红茶"])
setArr.add('矿泉水')
console.log(setArr)
如果增加的是数据里面有的,那么增加是不管用的
let setArr=new Set(["牛奶","可乐","绿茶","冰红茶"])
setArr.add('牛奶')
console.log(setArr)
增加不管用,那么声明呢?
let setArr=new Set(["牛奶","可乐","绿茶","牛奶"])
console.log(setArr)
我们发现声明一个一样的也是没有用的
所以数据里面是不允许重复的,也就是一个去重的过程,这是它最大的特点
查:has
它返回的是true或者false
let setArr=new Set(["牛奶","可乐","绿茶","咖啡"])
console.log(setArr)
console.log(setArr.has('咖啡'))
console.log(setArr.has('红茶'))
删:clear
扫描二维码关注公众号,回复: 9955275 查看本文章![]()
let setArr=new Set(["牛奶","可乐","绿茶","咖啡"])
console.log(setArr)
setArr.clear()
console.log(setArr)
可以看见数据已经被全部删除了,但是我们要是不想全部删除,而只是想删除某一个,该怎么操作呢?
- 用delete
let setArr=new Set(["牛奶","可乐","绿茶","咖啡"])
console.log(setArr)
setArr.delete('可乐')
console.log(setArr)
写完增删查,我们来看看怎么循环输出
- 方法1:for of
let setArr=new Set(["牛奶","可乐","绿茶","咖啡"])
for(let item of setArr){
console.log(item)
}
方法2:forEach
setArr.forEach((value)=>console.log(value))
如果我们想要知道元素里面有多少个数据,不用length,用size
console.log(setArr.size)
缺点:只能放数组,那对象怎么办呢?
用let weakObj =new WeakSet()
02 WeakSet
WeakSet里面是不能直接放对象的
下面这种是错误演示
let weakObj =new WeakSet({a:'HLS'})
正确的做法是需要添加add
,WeakSet
有点类似于懒加载
let weakObj =new WeakSet()
let obj={a:'HLS',b:'jack'}
weakObj.add(obj)
console.log(weakObj)
必须这个obj是声明好的
踩坑:内存空间一样,也是可以打印出来的
let weakObj =new WeakSet()
let obj={a:'HLS',b:'jack'}
let obj1={a:'HLS',b:'jack'}
weakObj.add(obj)
weakObj.add(obj1)
console.log(weakObj)
如果内存空间相同,则显示一个
let weakObj =new WeakSet()
let obj={a:'HLS',b:'jack'}
let obj1=obj
weakObj.add(obj)
weakObj.add(obj1)
console.log(weakObj)
03 Map
Map数据类型,用得更广泛
以前我们是这样写的:
let json={
name:'HLS',
skill:'web'
}
console.log(json.name)
json.name这种需要全部遍历的,效率比数组慢的多,而且灵活性不好
我们尝试使用map数据结构
let json={
name:'HLS',
skill:'web'
}
var map =new Map();
map.set(json,'cola')
console.log(map)
我们可以很清晰地看见key
和value
的值
let json={
name:'HLS',
skill:'web'
}
var map =new Map();
map.set(json,'cola')
console.log(map)
//对象和字符串互换一下
map.set('HLS',json);
console.log(map)
浏览器显示结果
map增删查
查:get()
// get
console.log(map.get(json))
// get
console.log(map.get('HLS'))
删
- 删除特定的值:delete
map.delete(json)
console.log(map)
- 删除全部的值
map.clear()
console.log(map)
我们要知道有多少个值,那就用size(size是属性)
console.log(map.size)
查:has 会返回true和false
console.log(map.has('HLS'))