【学习笔记51】ES6的新增属性Set和Map

news/2024/5/2 20:38:38/文章来源:https://blog.csdn.net/m0_58190023/article/details/128074135

一、Set

  • set类似于数组的一种数据结构,内部按照索引排序(但是不能通过索引取值)
  • 语法:let s = new Set([数据1, 数据2, 数据3])
  • 特点: 天生不支持重复数据
        let arr = [1, 2, 2, 3, 4, 4, 4, 3];let s = new Set(arr);console.log('原数组:',arr);console.log('set数据结构', s);console.log(s[0]);    // undefined 

在这里插入图片描述

1. size (类似数组的length);

  • 作用: 获取到当前数据结构中数据的数量
        let s = new Set([2, 3, 4, 5, 5, 5, 4, 4, 3])console.log('原始数据结构', s);console.log(s.size);

在这里插入图片描述

2. add方法;

  • 作用: 向当前数据结构中新增数据
        let s = new Set([2, 3, 4, 5, 5, 5, 4, 4, 3])console.log('原始数据结构', s);s.add(100);s.add(5);console.log('add后的数据结构', s);

在这里插入图片描述

3. has();

  • 作用: 查询当前数据结构中是否拥有该数据; 找到的时候, 返回true, 否则返回false
        let s = new Set([2, 3, 4, 5, 5, 5, 4, 4, 3])console.log('原始数据结构', s);s.delete(5);console.log('delete后的数据结构', s);

在这里插入图片描述

5. clear()

  • 作用: 清空当前数据结构
        let s = new Set([2, 3, 4, 5, 5, 5, 4, 4, 3])console.log('原始数据结构', s);s.clear();console.log('清空后的数据结构 ', s);

在这里插入图片描述

6. forEach

  • 作用: 遍历数据结构, 拿到数据结构的每一项
        let s = new Set([2, 3, 4, 5, 5, 5, 4, 4, 3])console.log('原始数据结构', s);s.forEach(function (item, key, origin) {// set数据结构是没有key, 所以item和key打印出来的值都一样console.log(item, key, origin);})

在这里插入图片描述

二、Map

  • Map: ES6推出的一种数据结构, 和set一样, 也不支持重复数据
  • 类似于对象的一种数据结构,但是map的key可以是任意类型的值
  • 语法: var m = new Map([key, value])
  • 在实际开发中, 我们使用map的场景一般为想要将对象的key用于字符串之外的数据时使用
        var obj = {a: 1,b: 2}console.log(obj);console.log(obj.a);      // 点语法, 将a当成一个字符串去对象中查找console.log(obj["a"]);   // 中括号语法, 去对象的key中查找一个 'a' 

1. 语法

        var arr = [1, 2, 3];var arr1 = [4, 5, 6];var m = new Map([[[500], [600]], [arr, arr1], ['arr123', arr1]])console.log('原始数据结构: ', m);

在这里插入图片描述

2. size;

  • 作用: 返回当前数据结构的 数据长度(多少个)
        var arr = [1, 2, 3];var arr1 = [4, 5, 6];var m = new Map([[[500], [600]], [arr, arr1], ['arr123', arr1]])console.log('原始数据结构: ', m);console.log(m.size);

在这里插入图片描述

3. set()

  • 作用: 向当前数据结构中, 新增数据
        var arr = [1, 2, 3];var arr1 = [4, 5, 6];var m = new Map([[[500], [600]], [arr, arr1], ['arr123', arr1]])console.log('原始数据结构: ', m);m.set('newKey', [1, 2, 3, 4, 5]);console.log('set 新增数据后的数据结构: ', m);

在这里插入图片描述

4. get(key)

  • 作用: 获取到指定key对应的value
        var arr = [1, 2, 3];var arr1 = [4, 5, 6];var m = new Map([[[500], [600]], [arr, arr1], ['arr123', arr1]])console.log('原始数据结构: ', m);console.log(m.get(arr));console.log(m.get('arr123'));

在这里插入图片描述

5. has(key)

  • 作用: 查询数据结构中是否存在当前key; 存在返回一个true ,否则返回一个false
        var arr = [1, 2, 3];var arr1 = [4, 5, 6];var m = new Map([[[500], [600]], [arr, arr1], ['arr123', arr1]])console.log('原始数据结构: ', m);console.log(m.has('12345'));console.log(m.has(arr));

在这里插入图片描述

5. delete

  • 作用: 删除当前数据结构对应的 key
        var arr = [1, 2, 3];var arr1 = [4, 5, 6];var m = new Map([[[500], [600]], [arr, arr1], ['arr123', arr1]])console.log('原始数据结构: ', m);m.delete('arr123');console.log(m);

在这里插入图片描述

6. clear

  • 作用: 清空当前数据结构
        var arr = [1, 2, 3];var arr1 = [4, 5, 6];var m = new Map([[[500], [600]], [arr, arr1], ['arr123', arr1]])console.log('原始数据结构: ', m);m.clear();console.log(m);

在这里插入图片描述

8. forEach

  • item: 对应的value
  • key: 对应的key
  • origin: 对应的原始数据结构
        var arr = [1, 2, 3];var arr1 = [4, 5, 6];var m = new Map([[[500], [600]], [arr, arr1], ['arr123', arr1]])console.log('原始数据结构: ', m);m.forEach(function (item, key, origin) {console.log(item, key, origin)})

在这里插入图片描述

三、对象语法的简写

  1. key 和 value 拼写一样
  2. 并且 value 写的是一个变量
  3. 满足这两个条件的情况, 可以少写 其中一个

1. 简写一

        let name = 'QF666'const obj = {name: name,age: 18,}console.log(obj);

在这里插入图片描述

        const obj = {name,age: 18,}console.log(obj);

2. 简写二

        let name = 'QF666'const obj = {name,age: 18,fn1: function () {console.log(1)},fn2() {console.log('222222')}}console.log(obj);obj.fn1()obj.fn2()

在这里插入图片描述

四、模块化开发

    /***  模块化开发: *      就是将功能拆分开, 每一个功能写到一个 JS 文件中 *      后续根据实际需求, 将不同的JS文件拼接到一起   * *      将多个逻辑分别写道多个JS文件中*          每一个文件, 都只能使用当前文件内的变量*          每一个文件, 就是一个独立的作用域(文件作用域)* *  ES6 使用  模块化开发的前提*      1. 页面必须使用服务器的形式打开*      2. script标签行内必须配置 type="module"* * *  如果想要拼接的话, 需要导入别的文件到自己文件内*      前提: 导入的文件, 必须有导出的内容* *      导出: 向外部暴露出一些内容, 可以是变量, 也可以是函数*      导入: 引入别的文件向外部暴露出的那些内容*/

在这里插入图片描述

1. index.html

    <script src="./index.js" type="module"></script>

2. index.js

		// 功能整合// 1. 引入文件// import XXX from '文件路径'// 引入方式 1import headerFn from "./header.js"; // 这种引入方式, 只能引入 导出方式1(默认导出)// 引入方式 2import { obj, arr } from "./header.js"; // 这种引入方式, 只能引入 导出方式2import * as color from "./content.js";  // 将 content.js 内 导出的内容, 全部存放到 变量 color// 2. 使用引入文件中暴露出来变量或方法console.log(headerFn);// headerFn()console.log(obj);console.log(arr);console.log(color);console.log(color.default);console.log(color.color1);console.log(color.color2);console.log(color.color3);console.log(color.color4);console.log(color.color5);

3.header.js

		// 拆分后的功能模块 1// 1. 向外暴露一些内容(导出)const fn = () => {console.log("我是功能模块1 的 fn 函数");};export default fn; // 默认导出(导出方式1)export const obj = {// 导出方式2name: "QF666",age: 18,};export const arr = [1, 2, 3, 4, 5];/***  默认导出一个JS文件 只能有一个*  导出方式2可以有多个*/

4. content.js

		// 拆分后的功能模块 2export const color1 = '#asd1'export const color2 = '#asd2'export const color3 = '#asd3'export const color4 = '#asd4'export const color5 = '#asd5'const red = '#fff'export default red

5. footer.js

		// 拆分后的功能模块 3

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_37959.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

JetpackCompose Navigation导航快速上手

Navigation 快速上手 下面案例简要展示使用 Compose 版本的 Navigation 库来实现两个页面之间的跳转 这是完整的结构&#xff08;忽略掉红线划过的那个包&#xff09; 编写欲跳转的两个页面 编写 Demo1 页面 子页面使用多个 composable 组件相组合的方法一一装配起来 Demo1m…

Java解决鸡兔同笼问题

1 问题 利用java程序&#xff1a;输入鸡和兔的总数和总腿数&#xff0c;来计算兔子和鸡的各个数量。 2 方法 import java.util.Scanner; /** * 已知鸡和兔的总数量为n,总腿数为m。 * 输入n和m,依次输出鸡和兔的数目&#xff0c; * 如果无解&#xff0c;则输出“No answer” */ …

PyQt5可视化编程-布局管理

在一个GUI程序里&#xff0c;布局是一个很重要的方面。布局就是如何管理应用中的元素和窗口。有两种方式可以搞定&#xff1a;绝对定位和PyQt5的layout类 1.绝对定位: 每个程序都是以像素为单位区分元素的位置&#xff0c;衡量元素的大小。所以我们完全可以使用绝对定位搞定每个…

数据结构与算法_AVL平衡二叉树_四种旋转,插入和删除

1 AVL平衡二叉树的概念 平衡二叉树在BST树基础上加了平衡操作。 BST树特点 &#xff1a;在BST树的基础上&#xff0c;引入了节点“平衡”的概念&#xff0c;任意一个节点的左右子树高度差不超过 1 &#xff0c;为了维持节点的平衡&#xff0c;引入了四种旋转操作&#xff0c;如…

【宝塔面板安装与配置、Redis安装与配置、MySQL安装与配置】

提示&#xff1a;宝塔面板下载地址&#xff1a;https://www.bt.cn/new/download.html 文章目录前言一、快速迁移二、设置固定ip一.保证可以连接网络二.设置固定ip三、搭建宝塔面板四、做好备份五、安装Redis六、安装MySQL一、8.0版本以下二、8.0版本以上三、安全组开放端口四、…

《web课程设计》 基于HTML+CSS+JavaScript实现中国水墨风的小学学校网站模板(6个网页)

&#x1f389;精彩专栏推荐 &#x1f4ad;文末获取联系 ✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 &#x1f482; 作者主页: 【主页——&#x1f680;获取更多优质源码】 &#x1f393; web前端期末大作业&#xff1a; 【&#x1f4da;毕设项目精品实战案例 (10…

安装OpenGL

提示错误信息&#xff1a; (base) C:\Users\Tina\PycharmProjects\FunnyToys-main>conda install opengl Collecting package metadata (current_repodata.json): done Solving environment: failed with initial frozen solve. Retrying with flexible solve. Collecting…

设置一个不能被继承的类

小屋杂谈&#xff0c;记录日常 方法1&#xff1a; 如果想让这个类不能被继承&#xff0c;可以把这个类的构造函数设置成私有&#xff0c;这样子类去继承他构造就会报错&#xff0c;这样的话这个类就是不能被继承的&#xff0c;如果需要用这个类的对象的话&#xff0c;在基类里…

设备安装CoreELEC系统,并配置遥控

目录0. 前言CoreELEC简介动机硬件1.准备工作1.1下载镜像1.2 制作启动U盘2.安装CoreELEC2.1 从U盘启动2.2 CoreELEC写入盒子emmc3.设置遥控器本文原首发于zdm&#xff0c;由于该平台审核机制出现问题且编辑器极其不好用&#xff0c;所以发布于此 仅作为记录操作的用途 0. 前言 …

时间工具类-- LocalDateTimeUtil详解

LocalDateTimeUtil 对时间进行操作的时候&#xff0c;使用LocalDateTimeUtil工具类可以大大提高使用的效率&#xff0c;具体的方法可以看下图&#xff1a; 具体的使用方法都在图中说明&#xff0c;主要是方便LocalDataTime的使用及操作 LocalDataTime的基本用法 基本用法 /…

00_linux_最简单构建字符设备 2.4版本之前使用

背景:怎么构建一个最简单的字符设备驱动并且可以使用app进行操作 名称大致意思设备proc/devices/设备名称 简单来说 insmode出来的设备节点/dev/xxx 对这个设备进行操作的文件 mknode使用主次设备号对设备关联 大致方法 1.写驱动文件(file_operation),构造对应的read write 函…

叠氮荧光染料:Azide-FL-BDP|1379771-95-5|BDP FL N3叠氮

BDP FL叠氮化物是一种类似于BODIPY FL叠氮化物的荧光染料&#xff0c;是一种具有点击化学性质的荧光染料。该荧光团是硼二吡咯甲基类荧光染料的代表&#xff0c;在水环境中具有较高的量子产率。azide系列产品包括可用于进一步连接的azide-acid&#xff1b;azide-amine&#xff…

Faster R-CNN详解

Faster R-CNN Faster R-CNN是作者Ross Girshick继Fast R-CNN后的又一力作。使用VGG16作为网络的backbone&#xff0c;推理速度在GPU上达到5fps(包括候选区域的生成)&#xff0c;准确率也有进一步的提升。在2015年的ILSVRC以及COCO竞赛中获得多个项目的第一名。 Faster R-CNN算…

使用星凸随机超曲面模型对扩展对象和分组目标进行形状跟踪(Matlab代码实现)

&#x1f468;‍&#x1f393;个人主页&#xff1a;研学社的博客 &#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜…

【电源专题】案例:不导这颗MOS管的原因是在电路上不通用?

本案例发生在MOS管替代料导入时。正常情况下在替代料导入、部品导入的时候,我们需要查看规格书。怎么查找规格书可以看文章【电子通识】芯片资料查询方法 对于一些关键的信息我们要做对比,一般来说要通过列表进行对比。但因为不同的供应商的测试标准不同,有很多是很难对比的…

浅析数据仓库和建模理论

第一章 认识数据仓库 1.1 数据仓库概念 数据仓库&#xff0c;英文名称为 Data Warehouse&#xff0c;可简写为 DW 或 DWH。数据仓库&#xff0c;是为企业所有级别的决策制定过程&#xff0c;提供所有类型数据支持的战略集合。它是单个数据存储&#xff0c;出于分析性报告和决…

第41讲:MySQL内置的QL性能分析工具

文章目录1.SQL性能分析的概念2.分析数据库中SQL的执行频率3.数据库中的慢查询日志3.1.开启慢查询日志功能3.2.模拟慢SQL查询观察日志内容4.Profile查看SQL每个阶段的耗时4.1.开启Profile操作4.2.随便执行一些查询语句4.3.查询执行SQL的耗时4.4.查询某一条SQL每个阶段的耗时4.5.…

Java项目:jsp+servlet实现的新闻发布系统

作者主页&#xff1a;源码空间站2022 简介&#xff1a;Java领域优质创作者、Java项目、学习资料、技术互助 文末获取源码 项目介绍 本项目分为前后台&#xff1b; 前台主要功能为&#xff1a; 首页、娱乐新闻、经济新闻、文化新闻、小道新闻、用户评价等&#xff1b; 后台主要…

目标检测论文解读复现之二十:基于改进Yolov5的地铁隧道附属设施与衬砌表观病害检测方法

前言 此前出了目标改进算法专栏&#xff0c;但是对于应用于什么场景&#xff0c;需要什么改进方法对应与自己的应用场景有效果&#xff0c;并且多少改进点能发什么水平的文章&#xff0c;为解决大家的困惑&#xff0c;此系列文章旨在给大家解读最新目标检测算法论文&#xff0…

ipv6地址概述——配置ipv6

个人简介&#xff1a;云计算网络运维专业人员&#xff0c;了解运维知识&#xff0c;掌握TCP/IP协议&#xff0c;每天分享网络运维知识与技能。个人爱好: 编程&#xff0c;打篮球&#xff0c;计算机知识个人名言&#xff1a;海不辞水&#xff0c;故能成其大&#xff1b;山不辞石…