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

【前端八股文】JavaScript系列:Set、Map、String常用属性方法

文章目录

    • Set
      • 概念
      • 与arr的比较
      • 属性和方法
      • 并集、交集、差集
    • Map
      • 概念
      • 属性和方法
    • String
      • 用索引值和charAt()的区别
      • charAt()和charCodeAt()方法的区别
      • 5个查找方法的区别
      • 如何把字符串分割为数组
      • 3个截取方法的区别
      • 大小写转换
      • 3个模式匹配方法(正则表达式)
      • 3个移除字符串收尾空白符
      • 2个获取字符串本身
      • 其他
    • 参考

本系列目录:【前端八股文】目录总结
是以《代码随想录》八股文为主的笔记。详情参考在文末。
代码随想录的博客_CSDN博客-leecode题解,ACM题目讲解,代码随想录领域博主

在这里插入图片描述

Set

概念

Set对象允许我们存储任何类型唯一值,无论是原始值还是对象引用。

let mySet=new Set();

唯一值,即不重复。

与arr的比较

JavaScript Set 的用法与理解_js set使用_暮春风的博客-CSDN博客

  • 查找快:O(1),而Array是O(n)
  • 删除不需要知道索引

在这里插入图片描述

属性和方法

常规操作

在这里插入图片描述

操作演示:大前端JS篇之搞懂【Set】 - 要爱学习鸭 - 博客园 (cnblogs.com)

遍历操作

  • keys():返回键名的遍历器
  • values():返回键值的遍历器
  • entries():返回键值对的遍历器
  • forEach():使用回调函数遍历每个成员
  • 支持for…of

注意:

  • Set的遍历顺序就是插入顺序,利用这个特性可以储存一些需要按顺序调用的函数
  • keys方法、values方法、entries方法返回的都是遍历器对象
  • Set不存在键名,只有键值,也可以认为键名和键值是同一个,所以keys和values返回的值是一样的
let s = new Set(['a', 'b', 'b', 1, 2])// 遍历key
for (let key of s.keys()) {console.log(key)// a b 1 2
}// 遍历value
for (let value of s.values()) {console.log(value)// a b 1 2
}// 遍历键值对
for (let entry of s.entries()) {console.log(entry)// [ 'a', 'a' ]// [ 'b', 'b' ]// [ 1, 1 ]// [ 2, 2 ]
}// forEach
s.forEach(function (value, key, s) {// 参数:value、key、set本身console.log('value', value, 'key', key, 's', s);// value a key a s Set(4) { 'a', 'b', 1, 2 }// value b key b s Set(4) { 'a', 'b', 1, 2 }// value 1 key 1 s Set(4) { 'a', 'b', 1, 2 }// value 2 key 2 s Set(4) { 'a', 'b', 1, 2 }
})

并集、交集、差集

并集

新Set+解构

let a = new Set([1, 2, 4])
let b = new Set([2, 4, 3])// 并集
let union = new Set([...a, ...b]);
console.log(union)//Set(4) { 1, 2, 4, 3 }

交集

filter

let a = new Set([1, 2, 4])
let b = new Set([2, 4, 3])// 交集
let intersect = new Set([...a].filter(item => b.has(item)));
console.log(intersect)//Set(2) { 2, 4 }

差集

let a = new Set([1, 2, 4])
let b = new Set([2, 4, 3])// 差集a-b
let c = new Set([...a].filter(item => !b.has(item)));
console.log(c) //Set(1) { 1 }// 差集b-a
let d = new Set([...b].filter(item => !a.has(item)));
console.log(d) //Set(1) { 3 }

Map

概念

Map对象保存键值对,能记住键的原始插入顺序任何值(对象或基本类型)都可以作为一个键或一个值。

  • Map的键只能出现一次,插入多次则更新为最新的值
let a = new Map()
a.set('a', 1)
a.set('a', 2)
a.set('a', 3)
console.log(a)//Map(1) { 'a' => 3 }
  • Map的查找复杂度小于O(N)

内部表示为哈希表O(1)、搜索树O(log(N))、或其他数据结构。

属性和方法

在这里插入图片描述
遍历方法

  • keys
  • values
  • entries
  • forEach
  • for…of

有Map如下:

let a = new Map()
a.set('a', 'a')
a.set('a', '1')
a.set('b', '2')
a.set('c', '3')console.log(a)//Map(3) { 'a' => '1', 'b' => '2', 'c' => '3' }

遍历keys:

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

遍历values:

for (let value of a.values()) {console.log(value)// 1// 2// 3
}

遍历entries:

for (let entry of a.entries()) {console.log(entry)// [ 'a', '1' ]// [ 'b', '2' ]// [ 'c', '3' ]
}

forEach:获得value

a.forEach(item => console.log(item))
// 1
// 2
// 3

for…of:获得[key,value]的数组

for (let item of a) {console.log(item)// ['a', '1']// ['b', '2']// ['c', '3']
}

想要得到分开的key和value可以解构:

for (let item of a) {const [key, value] = item;console.log(key, value)// a 1// b 2// c 3
}

String

比较全的总结——针对《红宝书》的笔记,跳转到3.3:【JavaScript高级程序设计】重点-第五章笔记:Date、RegExp、原始值包装类、单例内置对象-CSDN博客

比较全的总结:JavaScript 28个常用字符串方法及使用技巧 - 掘金 (juejin.cn)

在这里插入图片描述

用索引值和charAt()的区别

charAt:''
索引值:undefined

str[index]不兼容ie6-ie8,charAt(index)可以兼容。

const str = 'hello';
str.charAt(1)  // 输出结果:e 
str[1]         // 输出结果:e 
str.charAt(5)  // 输出结果:'' 
str[5]         // 输出结果:undefined

charAt()和charCodeAt()方法的区别

  • charAt方法获取对应位置的字符
  • charCodeAt方法获取指定位置字符的Unicode值
const str = 'hello';
console.log(str.charAt(0))//h
console.log(str.charCodeAt(0))//104

5个查找方法的区别

  • indexOf
  • lastIndexOf
  • includes
  • startsWith
  • endsWith

在这里插入图片描述

如何把字符串分割为数组

let str = "abcdef"
console.log(str.split(''))
// [ 'a', 'b', 'c', 'd', 'e', 'f' ]

split可以用正则表达式分隔:

const list = "apples,bananas;cherries"
const fruits = list.split(/[,;]/)
console.log(fruits);  // 输出结果:["apples", "bananas", "cherries"]

3个截取方法的区别

在这里插入图片描述

大小写转换

  • toLowerCase()
  • toUpperCase()

3个模式匹配方法(正则表达式)

在这里插入图片描述

3个移除字符串收尾空白符

在这里插入图片描述

2个获取字符串本身

  • valueOf:返回字符串对象原始值
  • toString:返回字符串对象本身

其他

  • 重复字符串:repeat()
  • 补齐字符串长度:padStart()padEnd()
  • 字符串转为数字:parseInt()parseFloat()

具体看JavaScript 28个常用字符串方法及使用技巧 - 掘金 (juejin.cn)

参考

JavaScript Set 的用法与理解_js set使用_暮春风的博客-CSDN博客
大前端JS篇之搞懂【Set】 - 要爱学习鸭 - 博客园 (cnblogs.com)
【JavaScript高级】ES6常见新特性:词法环境、let、const、模板字符串、函数增强、Symbol、Set、Map_es 词法环境_
【JavaScript高级程序设计】重点-第五章笔记:Date、RegExp、原始值包装类、单例内置对象-CSDN博客
JavaScript 28个常用字符串方法及使用技巧 - 掘金 (juejin.cn)

相关文章:

【前端八股文】JavaScript系列:Set、Map、String常用属性方法

文章目录Set概念与arr的比较属性和方法并集、交集、差集Map概念属性和方法String用索引值和charAt()的区别charAt()和charCodeAt()方法的区别5个查找方法的区别如何把字符串分割为数组3个截取方法的区别大小写转换3个模式匹配方法(正则表达式)3个移除字符…...

跳跃-动态规划问题

跳跃-动态规划问题1、题目描述2、解题思路2.1 解法一:动态规划2.2 解法二:DFS深度优先搜索最大权值1、题目描述 小蓝在一个 n 行 m 列的方格图中玩一个游戏。 开始时,小蓝站在方格图的左上角,即第 11 行第 11 列。 小蓝可以在方格…...

Django笔记三十九之settings配置介绍

这一篇笔记介绍 Django 里 settings.py 里一些常用的配置项,这些配置有一些是在之前的笔记中有过介绍的,比如 logging 的日志配置,session 的会话配置等,这里就只做一下简单的回顾,有一些是之前没有介绍过的就着重介绍…...

【JavaSE】类和对象(中)

类和对象(中)4. this引用4.1 为什么要有this引用4.2 什么是this引用4.3 this引用的特性5. 对象的构造及初始化5.1 如何初始化对象5.2 构造方法(构造器)5.2.1 概念5.2.2 特性5.3 默认初始化5.4 就地初始化6. 封装6.1 封装的概念6.2…...

C语言例程:学生成绩管理程序

学生成绩管理程序 实例说明 编制一个统计存储在文件中的学生考试分数的管理程序。设学生成绩以一个学生一条记录的 形式存储在文件中,每个学生记录包含的信息有姓名、学号和各门功课的成绩。要求编制具有以 下几项功能的程序:求出各门课程的总分&#…...

完美日记母公司再度携手中国妇基会,以“创美人生”助力女性成长

撰稿 | 多客 来源 | 贝多财经 当春时节,梦想花开。和煦的三月暖阳,唤醒的不止是满城春意,更有逸仙电商“创美人生”公益项目播撒的一份希望。 3月8日“国际妇女节”当日,为积极响应我国促进共同富裕的政策倡导,助力相…...

【JaveEE】线程的创建及常见方法解析(Tread类)

目录 1.Tread类介绍 2线程的构造方法——创建线程 1.继承Thread类,重写run()方法 2.使用Runnbable接口创建线程 3.继承 Thread, 重写 run, 使用匿名内部类 4.实现 Runnable, 重写 run, 使用匿名内部类 5.使用 lambda 表达式(重点掌握)…...

Linux的诞生过程

个人简介:云计算网络运维专业人员,了解运维知识,掌握TCP/IP协议,每天分享网络运维知识与技能。座右铭:海不辞水,故能成其大;山不辞石,故能成其高。个人主页:小李会科技的…...

面部表情识别1:表情识别数据集(含下载链接)

面部表情识别1:表情识别数据集(含下载链接) 目录 面部表情识别1:表情识别数据集(含下载链接) 1.前言 2.表情识别数据集介绍 1.JAFFE数据集 2.KDEF(Karolinska Directed Emotional Faces)数据集 3.GENKI数据集 4.RaFD数据集…...

CSS实现文字凹凸效果

使用两个div分别用来实现凹凸效果;text-shadow语法 text-shadow: h-shadow v-shadow blur color; h-shadow:必需。水平阴影的位置。允许负值。 v-shadow :必需。垂直阴影的位置。允许负值。 blur:可选,模糊的距离。 co…...

嵌入式常使用的库函数

自己创建简单的mcu中常用的库函数 文章目录自己创建简单的mcu中常用的库函数1. 自己编写库函数的意义2. 计算字符串长度.以\0作为结束符3. 复制字符串4. 字符串比较5. 将整数转换为ASCII数组6. 将ASCII码字符串转换成整数7. 将字节数组转换为16位整数8.计算CRC,用于Modbus协议9…...

【业务安全-02】业务逻辑漏洞之越权操作

越权越权即越权查看被人的信息,又分为水平越权和垂直越权,但是两者的本质都是一样的,只是越权的身份权限不一样而已水平越权:相同级别的用户,如用户A访问用户B垂直越权:普通用户到管理员,普通用…...

完全小白的pycharm深度学习调试+for循环断点条件设置

完全小白的pycharm深度学习调试for循环断点条件设置写在最前面基础方法pycharm断点调试控制台输入代码中循环的debug方法pycharm中图标的介绍常见的BugDebug经验1. 检查激活函数的输入值2. 检查梯度3. 消融实验4. 使用最短的时间5. 静下心来写在最前面 之前把seq2seqattention…...

直方图及其应用

直方图定义直方图是一种描述数据的分布通过将连续变量划分成一系列区间,统计区间频率,并用来表示,以表征其统计特征在图像处理中,直方图可以用来表示图像中像素值的分布状况,描述不同灰度级的像素在图像中的占比直方图…...

《SpringBoot篇》26.SpringBoot整合Jackson超详细教程(附Jackson工具类)

陈老老老板🦸👨‍💻本文专栏:SpringBoot篇(主要讲一些与springboot整合相关的内容)👨‍💻本文简述:本文讲一下Jackson常见用法,超级详细。👨‍&am…...

Redis 如何实现库存扣减操作和防止被超卖?

本文已经收录到Github仓库,该仓库包含计算机基础、Java基础、多线程、JVM、数据库、Redis、Spring、Mybatis、SpringMVC、SpringBoot、分布式、微服务、设计模式、架构、校招社招分享等核心知识点,欢迎star~ Github地址:https://github.com/…...

(Linux)Ubuntu查看系统版本

uname -a : 查看操作系统的发行版号和操作系统版本 Command: uname -aResult: Linux SERVER 5.19.0-35-generic #36-Ubuntu SMP PREEMPT_DYNAMIC Fri Feb 3 18:36:56 UTC 2023 x86_64 x86_64 x86_64 GNU/Linux uname -v : 查看版本号 Command: uname -vResult: #36-Ubuntu …...

VxWorkds 内存管理(3)

虚拟内存管理 对于带MMU的目标板,VxWorks提供虚拟内存的支持,VxWorks提供了两种虚拟内存管理单元(MMU)的支持: 基本MMU和VxVMI 基本MMU邦定于VxWorks中,可以通过config.h中宏定义INCLUDE MMU BASIC或Tornado工程配置中包含基本MMU组件 VxV…...

单元测试、反射、注解、动态代理

🏡个人主页 : 守夜人st 🚀系列专栏:Java …持续更新中敬请关注… 🙉博主简介:软件工程专业,在校学生,写博客是为了总结回顾一些所学知识点 目录单元测试、反射、注解、动态代理单元测…...

【数据结构】夯实基础|线性表刷题01

作者:努力学习的大一在校计算机专业学生,热爱学习和创作。目前在学习和分享:算法、数据结构、Java等相关知识。博主主页: 是瑶瑶子啦所属专栏: 【数据结构|刷题专栏】:该专栏专注于数据结构知识,持续更新&a…...

QMCDecode:让音乐自由播放的开源格式转换工具

QMCDecode:让音乐自由播放的开源格式转换工具 【免费下载链接】QMCDecode QQ音乐QMC格式转换为普通格式(qmcflac转flac,qmc0,qmc3转mp3, mflac,mflac0等转flac),仅支持macOS,可自动识别到QQ音乐下载目录,默认转换结果存…...

3步解锁Windows运行安卓应用:APK-Installer轻量解决方案

3步解锁Windows运行安卓应用:APK-Installer轻量解决方案 【免费下载链接】APK-Installer An Android Application Installer for Windows 项目地址: https://gitcode.com/GitHub_Trending/ap/APK-Installer 在数字化办公与娱乐融合的今天,安卓应用…...

如何极速获取金融市场数据:5分钟实战指南

如何极速获取金融市场数据:5分钟实战指南 【免费下载链接】qstock qstock由“Python金融量化”公众号开发,试图打造成个人量化投研分析包,目前包括数据获取(data)、可视化(plot)、选股(stock)和量化回测(策…...

WubiUEFI终极指南:如何在Windows中零风险安装Ubuntu系统

WubiUEFI终极指南:如何在Windows中零风险安装Ubuntu系统 【免费下载链接】wubiuefi fork of Wubi (https://launchpad.net/wubi) for UEFI support and for support of recent Ubuntu releases 项目地址: https://gitcode.com/gh_mirrors/wu/wubiuefi 你是否…...

springboot+vue基于web的演唱会音乐会购票管理系统设计系统

目录同行可拿货,招校园代理 ,本人源头供货商系统功能模块分析技术架构设计核心业务流程安全防护措施项目技术支持源码获取详细视频演示 :文章底部获取博主联系方式!同行可合作同行可拿货,招校园代理 ,本人源头供货商 系统功能模块分析 用户模块 注册登…...

OpenClaw数据安全:Qwen3.5-4B-Claude本地处理敏感合同

OpenClaw数据安全:Qwen3.5-4B-Claude本地处理敏感合同 1. 为什么法律行业需要本地化AI处理 去年我参与了一个法律科技项目,团队最初尝试用公有云API处理合同文本时,遭遇了客户对数据出海的强烈抵触。某次演示中,当法务总监看到合…...

GLM-Image技术验证:长宽比对构图影响实测数据

GLM-Image技术验证:长宽比对构图影响实测数据 1. 项目背景介绍 GLM-Image是由智谱AI开发的先进文本到图像生成模型,提供了一个美观易用的Web交互界面。这个界面基于Gradio构建,让用户能够轻松使用GLM-Image模型生成高质量的AI图像。 在实际…...

中山专用展示柜灯具,打造完美商品展示效果

在灯具销售领域,商品展示效果的好坏直接影响着销售业绩。一个好的展示柜不仅能保护灯具,更能通过巧妙的设计和布局,将灯具的优点充分展现出来,吸引顾客的目光。而中山作为中国著名的灯饰之都,其专用展示柜灯具更是有着…...

C++ 中this的秘密

class Test {public:void test() {test1();}void test1() {i = 10...

忍者像素绘卷GPU算力适配:A10/A100/V100多卡推理吞吐量对比

忍者像素绘卷GPU算力适配:A10/A100/V100多卡推理吞吐量对比 1. 技术背景与测试目标 忍者像素绘卷作为一款基于Z-Image-Turbo深度优化的图像生成工作站,其核心价值在于将传统漫画创作与16-Bit复古游戏美学相结合。在实际应用中,GPU算力直接决…...