当前位置: 首页 > news >正文

ES6中的set、map

ES6中的set、map

set

  • set类似于数组,但是它的值都是唯一的。
  • set可以接受一个数组或者具有interable接口的数据作为参数。
  • 向set数据加入NaN时,会被认为是同一个数据,虽然NaN是自己不等于自己的但是在set中是默认相等的。

set的某些属性和操作方法

const newSet = new set([1,'d']);
//set的属性 
newSet.size() //1 相当于数组的长度length
//set的数组操作方法
newSet.add(2) // 往set中添加数组 类似数组的push,因为add()之后会返回newSet所以可以进行链式调用
newSet.add(5).add(6);
newSet.delete(1) // 删除方法 返回布尔值代表是否删除成功
newSet.has(1) //判断set数据中是否包含某值 返回布尔值代表是否包含
newSet.clear() //清除数据 无返回值

set的循环

有四种循环
Set.prototype.keys():返回键名的遍历器
Set.prototype.values():返回键值的遍历器
Set.prototype.entries():返回键值对的遍历器
Set.prototype.forEach():使用回调函数遍历每个成员
和object的方法有点类似,keys方法、values方法、entries方法返回的都是遍历器对象。由于 Set 结构没有键名,只有键值(或者说键名和键值是同一个值),所以keys方法和values方法的行为完全一致。

let set = new Set(['red', 'green', 'blue']);

for (let item of set.keys()) {
  console.log(item);
}
// red
// green
// blue

for (let item of set.values()) {
  console.log(item);
}
// red
// green
// blue

for (let item of set.entries()) {
  console.log(item);
}
// ["red", "red"]
// ["green", "green"]
// ["blue", "blue"]

Map

键值对的集合,事实上,不仅仅是数组,任何具有 Iterator 接口、且每个成员都是一个双元素的数组的数据结构,都可以当作Map构造函数的参数。这就是说,Set和Map都可以用来生成新的 Map。
如果对同一个键进行赋值,后面的值会覆盖前面的值。

const set = new Set([
  ['foo', 1],
  ['bar', 2]
]);
const m1 = new Map(set);
m1.get('foo') // 1

const m2 = new Map([['baz', 3]]);
const m3 = new Map(m2);
m3.get('baz') // 3

map的一些属性和方法

const map = new Map();
map.set('foo', true);// 通过set设置值,同样是支持链式调用的
map.size() // 能查看长度
map.clear()// 清除 无返回值
map.get('foo') // 查看值 返回查询到的值
map.has('foo') // 是否包含某个值 返回布尔值
map.delete('foo') // 删除 返回布尔值是否删除成功

map的循环

Map.prototype.keys():返回键名的遍历器。
Map.prototype.values():返回键值的遍历器。
Map.prototype.entries():返回所有成员的遍历器。
Map.prototype.forEach():遍历 Map 的所有成员。

const map = new Map([
  ['F', 'no'],
  ['T',  'yes'],
]);

for (let key of map.keys()) {
  console.log(key);
}
// "F"
// "T"

for (let value of map.values()) {
  console.log(value);
}
// "no"
// "yes"

for (let item of map.entries()) {
  console.log(item[0], item[1]);
}
// "F" "no"
// "T" "yes"

// 或者
for (let [key, value] of map.entries()) {
  console.log(key, value);
}
// "F" "no"
// "T" "yes"

// 等同于使用map.entries()
for (let [key, value] of map) {
  console.log(key, value);
}
// "F" "no"
// "T" "yes"

还有其它强大功能 如map和json和数组相互转换等可以参考下面文档
参考文档

相关文章:

  • 基python的毕业设计题目超市进存销系统
  • 云计算基础
  • C语言文件基本操作
  • 2022年全球及中国疏水阀行业头部企业市场占有率及排名调研报告
  • java6.2 springCloud
  • 第6章Linux实操篇-开机、重启和用户登录注销
  • 大学网课答案微信公众号接口使用方法
  • 第5章Linux实操篇-Vi和Vim编辑器
  • java6.1 springboot
  • Linux高性能服务器之I/O复用之实例 ET AND LT(图像理解)(14)
  • 计算机毕业设计django基于python大学生心理健康系统(源码+系统+mysql数据库+Lw文档)
  • java计算机毕业设计个性化推荐的扬州农业文化旅游管理平台源码+数据库+系统+lw文档+mybatis+运行部署
  • C#进阶03——常用泛型数据结构类
  • 第4章Linux实操篇-远程登录到Linux服务器
  • 【FPGA教程案例66】硬件开发板调试6——基于FPGA的UDP网口通信和数据传输
  • 【Under-the-hood-ReactJS-Part0】React源码解读
  • Docker下部署自己的LNMP工作环境
  • Intervention/image 图片处理扩展包的安装和使用
  • LeetCode18.四数之和 JavaScript
  • Linux链接文件
  • MobX
  • TCP拥塞控制
  • vue2.0开发聊天程序(四) 完整体验一次Vue开发(下)
  • 阿里云购买磁盘后挂载
  • 阿里中间件开源组件:Sentinel 0.2.0正式发布
  • 关于 Linux 进程的 UID、EUID、GID 和 EGID
  • 近期前端发展计划
  • 力扣(LeetCode)21
  • 码农张的Bug人生 - 初来乍到
  • 前端学习笔记之观察者模式
  • 什么软件可以剪辑音乐?
  • 一起来学SpringBoot | 第十篇:使用Spring Cache集成Redis
  • 移动端解决方案学习记录
  • Java总结 - String - 这篇请使劲喷我
  • Nginx实现动静分离
  • NLPIR智能语义技术让大数据挖掘更简单
  • 昨天1024程序员节,我故意写了个死循环~
  • ### Cause: com.mysql.jdbc.exceptions.jdbc4.MySQLTr
  • $redis-setphp_redis Set命令,php操作Redis Set函数介绍
  • $refs 、$nextTic、动态组件、name的使用
  • (007)XHTML文档之标题——h1~h6
  • (Python第六天)文件处理
  • (ZT)薛涌:谈贫说富
  • (草履虫都可以看懂的)PyQt子窗口向主窗口传递参数,主窗口接收子窗口信号、参数。
  • (附源码)springboot炼糖厂地磅全自动控制系统 毕业设计 341357
  • (五)关系数据库标准语言SQL
  • (一)Thymeleaf用法——Thymeleaf简介
  • (转)详解PHP处理密码的几种方式
  • ***原理与防范
  • .NET Standard 的管理策略
  • .net 反编译_.net反编译的相关问题
  • .net利用SQLBulkCopy进行数据库之间的大批量数据传递
  • .net中应用SQL缓存(实例使用)
  • ::before和::after 常见的用法
  • @Async注解的坑,小心