ES6知识点整理Set的应用

ES6(ES2015)新特性整理 阅读详情

Set 类似于数组,但是成员的值都是唯一的,没有重复的值, 实现了iterator接口

set 的值不可重复,数组的值可以重复

let arr = [1,2,3,'5','5'];
let st = new Set(arr);
console.log(st); // 可以通过set来去除数组的重复的值,返回的是一个伪数组
console.log(st.size); // 4

set 的 add , delete, has, clear 方法

简单的add 与 delete :

let st = new Set();
var u = {name:'Joh'};
st.add(u);
let bool = st.delete(u);
console.log(bool); // true;

连续add与has的api :

let st = new Set();
var u = {name:'Joh'};
var r = {name:'Lily'};
st.add(u).add(r);
let bool = st.delete(r);
console.log(bool); // true
console.log(st.has(r)); // false
console.log(st.has(u)); // true;

clear清空set集合

let st = new Set();
var u = {name:'Joh'};
var r = {name:'Lily'};
st.add(u).add(r);
st.clear();
console.log(st.size); // 0

通过Array.from方法把类似数组结构的模型转化为数组

let arr = ['xxx', 'yyyy', 'yyyy'];
let newArr = Array.from(new Set(arr)); 
console.log(Array.isArray(newArr)); // true
console.log(newArr); // ["xxx", "yyyy"]

Set 原型上的Symbol.iterator 和 values 是同一个值, 可直接for-of遍历

console.log(Set.prototype[Symbol.iterator] === Set.prototype.values); // true
let st = new Set(['xxx', 'yyyy', 'yyyy', 'John']);
for(let k of st) {
  console.log(k); // 依次输出 xxx yyyy John 可以直接遍历,兼容map的数据结构
}

set中的keys和values方法

    let st = new Set(['xxx', 'yyyy', 'yyyy', 'John']);
    console.log(st.size); // 3
    let itKeys = st.keys();
    for(let k of itKeys) {
      console.log(k); // 依次输出 xxx yyyy John
    }
    console.log('>>>>>');
    let itVals = st.values();
    for(let v of itVals) {
      console.log(v); // 依次输出 xxx yyyy John
    }

set 的entries 实体对象,是个键和值的数组结构

let st = new Set(['xxx', 'yyyy', 'yyyy', 'John']);
let entriesIt = st.entries(); // 
for(let v of entriesIt) {
  console.log(v); // 依次输出 ["xxx", "xxx"] ["yyyy", "yyyy"] ["John", "John"]
}

关于NaN在set中的特殊性

let st = new Set();
console.log(NaN === NaN); // false , 此处 NaN 是不全等的,理应可以添加多个,不算重复,但是这里是个特例
st.add(NaN).add(NaN).add(NaN);
for(let v of st) {
  console.log(v); // 只输出一个 NaN 
}
将Apollo高精地图中的车道线叠加在多种导航地图上 本文介绍了将Apollo高精地图车道线叠加到普通导航地图的技术方案。高精地图具备厘米级车道精度和丰富的语义信息,叠加可实现可视化验证、调试分析和数据对比等功能。核心技术包括坐标系统转换(UTM/WGS84/BD09/GCJ02)和数据处理流程,通过Python脚本完成Apollo地图解析、坐标批量转换和多格式输出。文章详细提供了环境准备、工作目录创建和坐标转换脚本等操作步骤,实现了高精地图数据在OpenStreetMap、百度地图和高德地图上的可视化展示。 阅读详情

相关推荐

电流互感器的使用分析

有关电流互感器使用的注意事项,回头再看,耳目一新。

qq_46757048的博客 2万+

ES6之Set集合的使用

在许多实际问题中,我们必须处理一种集合,集合中的每个元素都是唯一的(每个元素只能出现一次),这种集合称之为Set。在ES6之前,这种集合只能通过模拟实现。 console.log("------------------Set--------------------"); //使用对象存储数据 function Set() { this.data = {}; this.length = ...

且听真言 1407

统信UOS V20 安装mysql5.7.42详细教程

到bin/下,执行下面的命令,初始化mysql服务信息,得到数据库的初始密码,实际如果目录不一样记得换成自己的目录。下载后通过远程将安装包上传至服务器,我这里将安装包上传至/usr/local/mysql 下。ps:这时候如果还是不能远程访问的话,可能是防火墙的原因,命令行执行以下命令即可。再次登录,发现缺少 libtinfo.so.5文件,再次建立软连接。登录,发现报错,提示缺少libncurses.so.5文件,使用。创建 /var/lib/ 下mysql目录。登录成功,修改密码,设置远程访问。

为谁伫立在风中 1万+

浏览器环境 兼容运行ES6语法

ES6语言的普及 2015年6月, ES2015(即 ECMAScript 6、ES6) 正式发布。ES2015 是该语言的一个显著更新,也是自 2009年 ES5 标准确定后的第一个重大更新。伴随着ES6的普及,大量的js框架都采用了最新的语法,并且也使前端开发大量采用工程化开发方式使用es6语法。但是工程化前端开发由于其babel编译的处理,已经很好的把ES6的代码编译为ES5的版本,使得各种浏览器都能很好的兼容。 浏览器的兼容性 然而纯浏览器端使用ES6语法还是存在浏览器支持度的差异,要特殊处理

u010227042的博客 2049

OpenCFD-SCU从编译到实战:用GPU加速超声速流动模拟(含Tecplot后处理教程)

本文详细介绍了OpenCFD-SCU从源码编译到GPU加速超声速流动模拟的全流程,包括环境准备、源码编译、24度压缩折角案例实战及Tecplot后处理教程。通过对比测试展示了GPU加速带来的显著性能提升,为计算流体力学研究提供了高效解决方案。

weixin_29281941的博客 378

手把手教你用神经网络优化电机控制:从Simulink仿真到实际部署

本文提供了一套完整的工程实践指南,详细讲解了如何将神经网络应用于电机控制,从Simulink仿真建模、轻量级网络设计,到关键的模型量化与代码生成,最终实现向DSP/FPGA硬件的实际部署。文章直面实时性、精度与资源限制等核心工程挑战,为工程师提供了从理论到落地的清晰路径和实用避坑策略。

weixin_29246195的博客 226

js 对set 方法的兼容写法

/* istanbul ignore next */ function isNative(Ctor) { return typeof Ctor === 'function' && /native code/.test(Ctor.toString()) } var hasSymbol = typeof Symbol !== 'undefined' && isNative(Symbol) && typeof Reflect !== 'un

qq_38371250的博客 771

WRF后处理避坑指南:从namelist配置到降水计算的全流程解析

本文提供了一份详尽的WRF模式后处理避坑指南,涵盖从理解wrfout文件结构、核心变量解析到累计降水计算与专业气象图绘制的全流程。重点解析了RAINC与RAINNC的正确处理方法,并分享了使用wrf-python库高效绘制位势高度叠加风场图、累计降水图等专业图表的实战技巧与代码,旨在帮助用户规避常见错误,提升后处理效率与图表质量。

weixin_29200485的博客 364

es6转为es5:Babel下的ES6兼容性与规范

参考链接:http://jixianqianduan.com/frontend-javascript/2015/10/16/es6-under-babel.html ES6标准发布后,前端人员也开发渐渐了解到了es6,但是由于兼容性的问题,仍然没有得到广泛的推广,不过业界也用了一些折中性的方案来解决兼容性和开发体系问题,但大家仍很疑惑,使用ES6会有哪些兼容性问题。 一、兼容性问题

ice-wee的专栏 6675

光度立体三维重建——光源标定

光源标定的目的是为了确定光源方向或强度,一般利用物体表面的明暗信息、阴影信息或者反射特性三类信息中的其中一种即可,也可以将三种信息结合。采用不同标定物,是利用不同标定物的反射特性获取更加精确的光源信息。

wfengzi5的博客 1561

STM32入门教程:无人机控制

我们将会一步一步引导您完成无人机的控制代码,包括无人机的姿态控制、飞行控制和通信控制等。第三步:配置无人机姿态控制 无人机的姿态控制是指控制无人机在空中的倾斜和转向。为了实现姿态控制,我们需要使用加速度计和陀螺仪传感器来获取无人机的姿态信息,并使用PID控制算法来控制无人机的姿态。在这一步骤中,您需要根据您使用的具体传感器和控制算法的要求进行更详细的配置和编码。在通信控制中,您需要考虑到通信的稳定性和可靠性。第五步:通信控制 无人机的通信控制是指与地面站或其他设备进行通信,传输飞行数据和接收飞行指令。

m0_75244442的博客 748

项目中关于ES6语法的兼容性 小结

项目中遇到的问题 本项目终端为用户手机App,问题出现于Android4.4版本,H5页面是基于 react 16+版本的项目,当 android 4.4版本的手机调起h5页面时,出现白屏。经过真机调试,在chrome控制台报出如下两个错误: Map is not defined Set is not defined 经查询发现, react@v16+ 依赖于ES6的 Set 和 Map ...

平平无奇的博客 2401

使用 Visual Studio Code 搭建 SAP UI5 本地开发环境

工欲善其事,必先利其器。时至今日,SAP 提供了非常多的 SAP UI5 开发工具,既包含本地搭建的,也包含浏览器里远端使用的工具,比如 WebIDE 和 Business Application Studio. 我们访问下面这个链接,就能找到所有这些工具的安装或者配置步骤: https://tools.hana.ondemand.com/#sapui5 如果想选择本地开发,SAP 推荐的工具是 Visual Studio Code,也就是本文要介绍的内容。 也可以下载 WebIDE 的本地安装包,将其安

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 1万+

【秋招面经】全网最全大华前端题目总结

bind和call、apply有什么作用?它们的区别是什么?【JavaScript总结】之数组javaScript之常用设计模式(工厂模式、单例模式、观察者模式、装饰者模式)

qq_40992225的博客 3087

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

22个关于ES6的最新面试题汇总整理

作者:StevenLikeWatermelonhttps://juejin.cn/post/6844903734464495623近期在复习ES6,针对ES6新的知识点,以问答形式整理一...

前端达人 8632

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

ES6前端面试题整理

ES6前端面试题整理,es5和es6的区别, ES6新增的一些特性,箭头函数,模板字符串,解构赋值,... 展开运算符,修饰器 @,Symbol,Proxy代理,使用箭头函数应注意什么?Set、Map的区别?setTimeout、Promise、Async/Await 的区别,用class 手写一个promise,es6的导入导出模块

LYFlied的博客 7940

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

ES6面试、复习干货知识点汇总(全)

近期在复习ES6,针对ES6新的知识点,以问答形式整理一个全面知识和问题汇总。(全干货,适合对ES6有一定理解的同学复习,以及ES6面试。) 一、问:ES6是什么,为什么要学习它,不学习ES6会怎么样? 答: ES6是新一代的JS语言标准,对分JS语言核心内容做了升级优化,规范了JS使用标准,新增了JS原生方法,使得JS使用更加规范,更加优雅,更适合大型应用的开发。学习ES6是成为...

前端码农 2941

ES6 知识点整理

ES6核心知识点摘要 变量声明:let/const具有块级作用域和暂时性死区,const声明常量时引用类型属性可修改。 箭头函数:继承外层this,不可作构造函数,无arguments对象。 模板字符串:反引号支持多行文本和变量嵌入(${x})。 解构赋值:从数组/对象快速提取值,简化数据操作。 异步处理:Promise管理异步状态,async/await以同步写法处理异步。 数据结构:Set自动去重,Map支持任意类型键。 Class与模块化:类语法糖实现继承,import/export拆分代码模块。 高

黄同学的博客 1482

【ES6】Set数据结构

添加某个值,返回 Set 结构本身。:删除某个值,返回一个布尔值,表示删除是否成功。:返回 个布尔值,表示参数是否为 Se 的成员。clear (): 清除所有成员,没有返回值。Array.from方法可以将 Set 结构转为数组。这就提供了一种去除数组的重复元素的方法。点击这里即可获取,包括答案解析。如果你觉得这些内容对你有帮助,可以扫码获取!!(备注:前端)点击这里即可获取,包括答案解析。[外链图片转存中…(img-6ojpNuTc-1712995862303)]

2401_84152763的博客 1001

es6知识点整理

es6知识点整理 文章目录es6知识点整理let和const变量的解构赋值模板字符串函数的扩展对象的语法糖set和mapsymbolPromiseasync/awaitclass let和const let 声明变量 不存在变量提升 不能在变量声明语句之前去使用变量 在变量声明前使用变量会报错 暂时性死区 存在暂时性死区,即在变量声明语句之前的区域和声明语句外的块级作用域下是不能使用该变量的 不允许重复声明 在声明变量之后,不能重复声明该变量,只能进行赋值操作 块级作用域 ES6中,

XDE_cat_的博客 807

ES6知识点整理

ES6-ES11

VCDA的博客 401

ES6知识点整理之----Set

1、ES6 提供了新的数据结构 Set。它类似于数组,但是成员的值都是唯一的,没有重复的值。Set 本身是一个构造函数,用来生成 Set 数据结构。 const s = new Set(); [2, 3, 5, 4, 5, 2, 2].forEach(x => s.add(x)); for (let i of s) { console.log(i); } ...

ap1005233的博客 162

ES6面试题整理汇总

ES6面试题整理汇总

山雀的博客 8450

【ES6】Set数据结构,讲的太清楚了

添加某个值,返回 Set 结构本身。:删除某个值,返回一个布尔值,表示删除是否成功。:返回 个布尔值,表示参数是否为 Se 的成员。clear (): 清除所有成员,没有返回值。Array.from方法可以将 Set 结构转为数组。这就提供了一种去除数组的重复元素的方法。

2401_84093054的博客 939

ES6 Set() 完全指南:从基础到实战应用

本文全面介绍了ES6引入的Set数据结构及其应用。Set是一种无序且不重复的数据集合,核心特性包括自动去重、支持任意数据类型、可迭代性等。文章详细讲解了Set的初始化方式、常用API方法(add/delete/has/clear)以及四种遍历方式(for...of/forEach/keys/values)。重点展示了Set在数组去重、高效查询、集合运算(并集/交集/差集)和DOM元素存储等实战场景中的应用,同时指出了引用类型去重和NaN处理的注意事项。通过合理使用Set,可以显著简化代码并提升查询效率(O(

. 904

整理学习——ES6的Set和WeakSet

文章目录Set([iterable])属性Set.lengthget Set[@@species]Set.prototype实例属性Set.prototype.constructorSet.prototype.size方法Set.prototype.add(value)Set.prototype.clear()Set.prototype.delete(value)Set.prototype.ent...

shaliwang的博客 401
上一篇: ES6知识点整理Generator的应用
下一篇: ES6知识点整理Map的应用
Wang's Blog
博客等级 码龄12年 7438粉丝 2421原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Wang's Blog

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值