当前位置:网站首页>Set集合与Map集合
Set集合与Map集合
2022-08-04 05:26:00 【fcc627】
一、Set集合
Set集合是一种数据结构,类似于数组。不能存放重复的值,通常用来做数组去重或字符串去重
创建set集合及常用方法:
(1)创建集合:new Set()
(2)常用方法:
a、add():向集合中添加元素
b、delete():删除元素
c、has():判断集合中是否存在某个值
d、clear():清除集合中所有元素
let set=new Set()
set.add(1)
set.add(2)
set.add(2)
set.add(12).add(15).add(12)
console.log(set); //输出:Set(4) { 1, 2, 12, 15 }
console.log(...set); //输出:1 2 12 15
console.log([...set]); //输出:[ 1, 2, 12, 15 ]
set.delete(15) //返回true表示删除成功 false表示删除失败
console.log([...set]);
console.log(set.has(15)); //判断集合中是否存在15
console.log(set.has(12));
set.clear()
console.log(set);
(3)集合的遍历:Set集合中key和value是一样的,所以keys()和values()是一样的
a、获取集合的keys或values进行遍历
b、通过forEach进行循环
let set=new Set()
set.add('西安').add('咸阳').add('渭南').add('铜川')
for(let i of set.keys()){
//keys()函数的作用:获取set中的所有的键(key),返回值也是集合
console.log(i)
}
console.log('------------------------')
for(let t of set.values()){
//values()函数的作用:获取set中的所有的值(value),返回值也是集合
console.log(t)
}
console.log('------------------------')
//注意:Set中的key和vlaue是相同的,即keys()和values()的返回值是一样的
set.forEach(function(key){
//函数的两个参数的值是一样的
//console.log(`${key}:${val}`);
console.log(`${
key}`)
})
(4)通过数组来构造一个Set集合
let arr=[11,22,33,44,55]
let set=new Set(arr)
console.log(set);
(5)通过Set实现集合的交集与并集
a、并集
b、交集
let arr=[11,22,33,44,55,]
let list=[66,77,88,11,44]
let A=new Set(arr)
let B=new Set(list)
//实现A和B的并集
let C=new Set([...A,...B])
console.log('A集合:',...A);
console.log('B集合:',...B);
console.log('A和B的并集:',...C);
//实现A和B的交集
let D=new Set([...A].filter(function(val){
//通过过滤器找到在A和B中都出现的元素
if(B.has(val)){
return val
}
}))
console.log('A和B的交集:',...D);
console.log('D的元素个数:',D.size); //size属性:用来表示元素个数
(6)WeakSet集合:只能存放对象,支持add、delete、has方法,但不支持size属性和keys()
let ws=new WeakSet()
ws.add({
id:'1001',uname:'刘备'})
console.log(ws);
二、Map集合
(1)在ES5中没有Map,但是有object对象(采用hash结构:key-value),键(key)的数据类型只能是字符串
(2)ES6中增加了Map
A、属性:size 表示集合中的元素个数
B、常用方法:
a、set():添加数据
b、get():获取数据
c、has():判断某个key是否存在
d、delete():删除key
e、clear():清除所有的key
let map=new Map()
map.set('id',1001)
map.set('name','刘备')
map.set('age',25)
console.log(map.size);
let n=map.get('name') //get(key)
console.log(n);
console.log(map.has('age')); //has(key)
C、遍历方法
a、keys():返回map中的所有key
b、values():返回map中的所有value
c、entries():返回所有的map成员
d、forEach():
//函数带两个参数,第一参数对应key。第二个参数对应value;若函数只有一个参数则对应value
map.forEach(function(key,val){
console.log(`${key}:${val}`);
})
for(let key of map.keys()){
//console.log(key);
console.log(`${
key}:${
map.get(key)}`);
}
console.log('------------------------')
for(let val of map.values()){
console.log(val);
}
console.log('------------------------')
for(let kv of map.entries()){
console.log(kv);
}
console.log('------------------------')
for(let [key,value] of map.entries()){
console.log(`${
key}:${
value}`);
}
console.log('------------------------')
map.forEach(function(key,val){
console.log(`${
key}:${
val}`);
})
D、转换为数组:使用'...'运算符
E:用filter过滤
//将key转换为数组
let k=[...map.keys()] //输出:[ 'id', 'name', 'age' ]
console.log(k);
//将value转换成数组
let v=[...map.values()] //输出:[ 1001, '刘备', 25 ]
console.log(v);
//将key-value转换为数组
//输出二维数组:
[
[ 'id', 1001 ],
[ 'name', '刘备' ],
[ 'age', 25 ]
]
let obj=[...map.entries()]
console.log(obj);
let map=new Map()
map.set('101',15)
map.set('102',5)
map.set('103',150)
map.set('104',28)
map.set('105',19)
map.set('106',36)
console.log(map);
//将map中value是偶数的键值对(key-value)过滤出来,存入一个新的map中
let map1=new Map([...map].filter(function([key,val]){
if(val%2==0){
return[key,val]
}
}))
console.log(map1);
边栏推荐
猜你喜欢
Programming hodgepodge (4)
EntityComponentSystemSamples学习笔记
The cost of automated testing is high and the effect is poor, so what is the significance of automated testing?
MySQL log articles, binlog log of MySQL log, detailed explanation of binlog log
Unity Visual Effect Graph入门与实践
DP4398:国产兼容替代CS4398立体声24位/192kHz音频解码芯片
想低成本保障软件安全?5大安全任务值得考虑
MySQL日志篇,MySQL日志之binlog日志,binlog日志详解
Delphi-C端有趣的菜单操作界面设计
【问题解决】同一机器上Flask部署TensorRT报错记录
随机推荐
PHP实现异步执行程序
解决JDBC在web工程中无法获取配置文件
MySql数据恢复方法个人总结
Embedded system driver primary [4] - under the basis of character device driver _ concurrency control
页面刷新没有执行watch?
IP地址查询
string类简介
LCP 17. 速算机器人
Grain Mall - Basics (Project Introduction & Project Construction)
程序员也应了解的Unity粒子系统
擎朗智能全国研发创新中心落地光谷:去年曾获2亿美元融资
9. Dynamic SQL
Sublime Text 3 2021.8.3 个人配置
跨域问题的解决
Several ways to heavy
webrtc中视频采集实现分析(一) 采集及图像处理接口封装
EntityComponentSystemSamples学习笔记
9、动态SQL
实现登录密码混合动态因子,且动态因子隐式
箭头函数的使用