map集合和set集合

别来无恙 提交于 2020-03-05 12:14:52

set集合

set用于存放不重复的数据
1、创建new Set(); 创建一个没有任何内容的set集合
new Set(iterable); 创建一个具有初始内容的set集合,内容来自于可迭代对象每一次迭代的结果
如果写重复了,会自动去重。可用于去重操作
eg:
数组去重:
const arr = [3, 532, 2, 3, 1, 1, 6, 5, 6, 5]
// const s = new Set(arr); 获得set集合对象
// const result = […s];把set集合转换为数组
const result = […new Set(arr)];
console.log(result);
字符串去重
const str = “fagalganbvailhvabivav”;
const s = […new Set(str)].join("");
console.log(s)

2、对set集合进行后续操作
①add(数据):添加一个数据到set集合末尾,如果数据已存在,则不进行任何操作
②set 使用Object.is的方式判断两个数据是否相同,但是针对+0和-0,set认为是相对的【颠倒】
③has(数据):判断set中是否存在对应的数据【Object.has】
④delete(数据):删除匹配的数据,返回是否删除成功
⑤clear():清空数据集合
⑥size:获取set集合中的元素数量,只读属性,无法赋值

3、如何与数组进行相互转换
const s=new Set([x,x,x,x]);
//set本身也是一个可迭代对象,每次迭代的结果就是每一项的值
//用展开运算符…展开数组里面的东西
const arr = […s];

4、如何遍历
①使用for…of循环进行遍历
②使用set中的实例方法forEach()
注意:set集合中不存在下标,因此forEach中的回调的第二个参数和第一个参数是一致的

map集合

map集合
键值对(key value pair)数据集合的特点:键不可重复
map集合专门用于存储多个键值对数据
在map出现之前,我们使用的是对象的方式来存储键值对,键是属性名,值是属性值
使用对象存储有以下问题
1、键名只能是字符串
2、获取数据的数量不方便
3、键名容易跟原型上的名称冲突

完整的就用对象;
随意增加或者删除,少一点多一点都不是问题的就用map

1、创建map

new Map(); //创建一个空的map
new Map(iterable)

2、如何进行后续操作
size:只读属性,获取当前map中键的数量
set(键,值):设置一个键值对,键和值可以是任何类型

    如果键不存在,则添加一项
    如果键已经存在,则修改它的值
    比较键的方式和set相同

{}添加,会添加两个键,不会覆盖,如果用变量存储就会覆盖

get(键):根据一个键得到对应的值
has(键):判断某个键是否存在
delete(键):删除指定的键
clear():清空

3、和数组互相转换

和set一样

4、遍历

for-of,每次迭代得到的是一个长度为2的数组
forEach,通过回调遍历
    参数1:每一项的值;参数2:每一项的键;参数3:map本身
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!