当前位置:网站首页>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);
边栏推荐
猜你喜欢
8.03 Day34---BaseMapper查询语句用法
canal实现mysql数据同步
PHP实现异步执行程序
Wwise入门和实战
MySQL log articles, binlog log of MySQL log, detailed explanation of binlog log
The cost of automated testing is high and the effect is poor, so what is the significance of automated testing?
音视频相关基础知识与FFmpeg介绍
想好了吗?
Cannot read properties of null (reading 'insertBefore')
Unity Visual Effect Graph入门与实践
随机推荐
9. Dynamic SQL
MySQL数据库(基础)
去重的几种方式
4.1 声明式事务之JdbcTemplate
手把手教你实现buffer(二)——内存管理及移动语义
FLV格式详解
4.3 基于注解的声明式事务和基于XML的声明式事务
心余力绌:企业面临的软件供应链安全困境
webrtc中的视频编码(一) 视频编码模块轮廓
ORACLE LINUX 6.5 安装重启后Kernel panic - not syncing : Fatal exception
OpenCV获取和设置图像的平均亮度
MySQL日期函数
Programming hodgepodge (4)
php实现telnet访问端口
Web Basics and Exercises for C1 Certification - My Study Notes
C language -- operator details
Delphi-C端有趣的菜单操作界面设计
MySQL date functions
Swoole学习(二)
EventBus源码分析