今天重点见一下Set

Set 在我印象里它主要就是去重,Set 是一个值的集合,这个集合中所有的值仅出现一次

Set 属性size:和Map的size一样,返回成员的总数

Set的方法:

  • Set.prototype.add(value):添加某个值,返回 Set 结构本身。
  • Set.prototype.delete(value):删除某个值,返回一个布尔值,表示删除是否成功。
  • Set.prototype.has(value):返回一个布尔值,表示该值是否为Set的成员。
  • Set.prototype.clear():清除所有成员,没有返回值。
let set = new Set();
set.add(1);set.add(1);set.add(2);
set.has(1);//true
set.has(2);//true
set.add({x:2}); set.add({x:1});
set.add(function(){});
set.add([]);
set.has(2)//true console.log(set.size)
set.delete(1);
set.forEach(point =>{
if(point.x<5){
set.delete(point)
}
})
console.log(set.size)// set.clear();
console.log(set.size)//

Set里面的很多方法和Map是一样的(包括下面的)。同样对象,函数,数组,都是唯一的地址,

Set含有has判断特殊值

+0,-0是恒定的,还有undefned与undefined,他俩也是不重复的,而NaN 与 NaN 是不恒等,Set会认为他俩相等

Set的遍历方法:

  • Set.prototype.keys():返回键名的遍历器。
  • Set.prototype.values():返回键值的遍历器。
  • Set.prototype.entries():返回所有成员的遍历器。
  • Set.prototype.forEach():遍历 Set的所有成员。
const set = new Set(['a', 'b', 'c'])

for (let item of set.keys()) {
console.log(item)
}
// a
// b
// c

for (let item of set.values()) {
console.log(item)
}
// a
// b
// c

for (let item of set.entries()) {
console.log(item)
}
// ["a", "a"]
// ["b", "b"]
// ["c", "c"]

// 直接遍历set实例,等同于遍历set实例的values方法
for (let i of set) {
console.log(i)
}
// a
// b
// c

set.forEach((value, key) => console.log(key + ' : ' + value))

// a: a
// b: b
// c: c

最后对比一下他俩的区别

Set主要还是去重,值唯一,

Map主要是以键值对的形式存在,类似于json,但包含所有数据类型

 

Map对象,Set对象使用(2)的更多相关文章

  1. [原创]java WEB学习笔记59:Struts2学习之路---OGNL,值栈,读取对象栈中的对象的属性,读取 Context Map 里的对象的属性,调用字段和方法,数组,list,map

    本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱 ...

  2. JAVA之旅(二十二)——Map概述,子类对象特点,共性方法,keySet,entrySet,Map小练习

    JAVA之旅(二十二)--Map概述,子类对象特点,共性方法,keySet,entrySet,Map小练习 继续坚持下去吧,各位骚年们! 事实上,我们的数据结构,只剩下这个Map的知识点了,平时开发中 ...

  3. 【js jQuery】map集合 循环迭代取值---以及 map、json对象、list、array循环迭代的方法和区别

    后台给前台传来一个map @ResponseBody @RequestMapping(value = "getSys") public Map<Long,String> ...

  4. 利用JSON将Map转换为类对象

    Map类型做为一种常见的Java类型,经常在开发过程中使用,笔者最近遇到要将Map对象做为一种通用的参数变量,下传到多个业务类方法中,然后在各个业务类方法中将Map转换为指定类对象的情况.如何将Map ...

  5. js es6 map 与 原生对象区别

    区别 object和Map存储的都是键值对组合.但是: object的键的类型是 字符串: map的键的类型是 可以是任意类型: 另外注意,object获取键值使用Object.keys(返回数组): ...

  6. 【重温基础】11.Map和Set对象

    本文是 重温基础 系列文章的第十一篇. 今日感受:注意身体,生病花钱又难受. 系列目录: [复习资料]ES6/ES7/ES8/ES9资料整理(个人整理) [重温基础]1.语法和数据类型 [重温基础]2 ...

  7. map json 字符串 对象之间的相互转化

    1.对象与字符串之间的互转 将对象转换成为字符串 String str = JSON.toJSONString(infoDo); 字符串转换成为对象 InfoDo infoDo = JSON.pars ...

  8. JSON数组对象和JSON字符串的转化,map和JSON对象之间的转化

    这种用法包括前端和后端: 前端: 1. 转化为JSON对象方便操作 var jsonObj = JSON.parse(str); 得到的是一个json数组对象,可以通过 for (var p in j ...

  9. Java创建List、Map等集合对象的同时进行赋值操作

    title: Java创建List.Map等集合对象的同时进行赋值操作 date: 2019-11-28 23:25:47 tags: JavaSE categories: JavaSE 问题简介   ...

  10. map集合 可变对象

    #map集合 可变对象 stu = {'xiaoming':34,'xiaohogn':56,'小王':569} print(stu['小王']) ''' 如果key不存在,dict就会报错: > ...

随机推荐

  1. AKS素性检测

    2002年印度数学家Manindra Agrawal, Neeraj Kayal,Nitin Saxena 给出了一个是否为素数的判别准则. 定理一:设 $a$ 是于 $p$ 互素的整数,则 $p$ ...

  2. springboot2.0入门(六)-- ymal语法、数据校验

    一.基本使用 1.ymal语法是一种更符合人类命名习惯的语法: # 1. 一个家庭有爸爸.妈妈.孩子. # 2. 这个家庭有一个名字(family-name)叫做“happy family” # 3. ...

  3. csv和xlsx区别

    CSV是文本文件,用记事本就能打开.XLS 是二进制的文件只有用 EXCEL 才能打开: CSV 文件格式只能保存活动工作表中的单元格所显示的文本和数值.数据列以逗号分隔,每一行数据都以回车符结束.如 ...

  4. 003_linuxC++之_namespace使用

    (一)引入namespace原因: 假如有很多跟人共同完成一项工程,工程中难免会有函数定义一样的名称,不可能一个一个的询问这个函数 你定义过了没有,所以引入namespace #include < ...

  5. web超大文件上传

    文件夹数据库处理逻辑 publicclass DbFolder { JSONObject root; public DbFolder() { this.root = new JSONObject(); ...

  6. [Hdoj] Fast Matrix Calculation

    题面:http://acm.hdu.edu.cn/showproblem.php?pid=4965 题解:https://www.zybuluo.com/wsndy-xx/note/1153981

  7. read,write,lseek

    转自 http://blog.csdn.net/todd911/article/details/11237627 1.read 调用read函数从文件去读数据,函数定义如下: #include < ...

  8. ios高版本中select的option选项内容不显示问题

    <select class="form-control" @change="inputChange(item.id,postObj[item.id])" ...

  9. 第二次博客作业: 函数+进制转换器v1.0beta

    一:运行截图  二:介绍函数 1, int panduan1(int n,char a[],int count,int sign)//判断用户是否输入了除数字和a-f范围外的字符 { int i; ; ...

  10. Undertow

    Spring Boot 内嵌容器Undertow参数设置 配置项: # 设置IO线程数, 它主要执行非阻塞的任务,它们会负责多个连接, 默认设置每个CPU核心一个线程 # 不要设置过大,如果过大,启动 ...