JavaScript 数组的map和join方法、延迟函数、location对象、本地存储、正则表达式、箭头函数

数组处理方法

map方法

map方法的作用是遍历数组所有元素,然后执行处理操作,最后返回一个新的数组

语法格式:新数组 = 原来数组.map(function(ele,index){
        ele是数组元素,index是下标
        执行完操作之后使用return 返回一个新的元素
})

示例

  let arr = [1,2,3,4,5,6,7,8,9]
  let arr2 = arr.map(function(ele,index){
    return ele*ele
  })
  console.log(arr2)

我们循环了每一个元素,然后执行了平方的操作。最后返回一个新的数组给arr2
最后输出arr2的结果是 

join方法

join 方法的作用是拼接数组的所有元素,并返回为一个新的字符串

语法格式:变量 = 数组.join() //join默认的是以逗号分隔,也可以自己定义分隔符。如果使用空的字符则所有元素拼接到一起没有分隔符

示例

  let arr = [1,2,3,4,5,6,7,8,9]
  let str = arr.join('')
  let str2 = arr.join()
  let str3 = arr.join('-')
  console.log(str, str2, str3)

最后的输出结果
 

延迟函数

设置延迟函数

延迟函数:steTimeout(1,2)  //1延迟的函数     2延迟多长时间

类似于间歇函数,但是延迟函数只会执行一次。它的运用场景主要是多少秒之后默认跳转这种场景

运用示例:

<style>
  .a{
    width: 1024px;
    height: 300px;
    background-color: red;
    display: flex;
    justify-content: right;
  }
  .button{
    width: 30px;
    height: 30px;
    display: none;
  }
</style>
</head>
<body>
<div class="a">//假设div是广告
  <button class="button">X</button>
</div>
<script>
  const button = document.querySelector('.button')
  setTimeout(function(){
    button.style.display = "block"
    button.addEventListener('click', function(){
      const div = document.querySelector('.a')
      div.style.display = 'none'
    })
  },3000)
</script>
</body>

这个例子是三秒后可以关闭广告,在前三秒关闭按钮是不可见的,只有三秒之后才可以看到关闭按钮,点击关闭按钮之后会把广告的display设置为none

清除延迟函数

我们在设置延迟函数的时候也会返回一个“序号”,我们可以使用这个序号来清除这个延迟函数。运用场景可以是:加载页面,发现拥护是vvvvvvvvvip,我们直接清除掉这个延迟函数然后把广告直接设置为none,这样我们尊贵的vvvvvvvvvip就不用点击关闭广告了

示例

let a = setTimeout(function(){
  //这是一个五秒的广告
},5000)

clearTimeout(a) //清掉这个延迟函数

location对象

localtion对象包含了哪些信息,有什么作用。作用:访问和操作url信息的对象

location.href
获取当前url,如果重新赋值为另一个网站的url则跳转到另一个网站

location.protocol
获取当url协议部分,如https://www.baidu.com  ---》获取https这个协议

location.hostname
获取当前url的域名部分,如https://www.baidu.com ---》获取www.baidu.com这个域名

location.port
获取当前url的端口

location.search
获取url中查询字符串部分,包括问号。如https://www.wodefa.com?name=xxx ---》获取到?name=xxx

location.hash 
获取url中的锚点部分,包括井号,如https://www.bd.com/#/this ---》获取到#/this

location.reload()
这是一个方法,有小括号。作用是刷新页面
可以传递参数 true。表示强制刷新  =  ctrl+f5

本地存储

什么是本地存储,本地存储就相当于浏览器自带的一个小型数据库。我们的数据可以放到这个区域内。本地存储分为两种,第一种是localStorage,这种存储的方式是持久的。我们关闭浏览器或者页面都是不会让数据消失的,除非我们手动删除。第二种是sessionStorage,这种方式写的数据会跟随浏览器或者网页的关闭消失。

本地存储数据的方式都是以键对值的方式存储的,都是一个key对应一个value。本地存储只能存储字符串数据,存入别的类型会自动转换字符串。

localStorage

localStorage存储的数据具有持久性

1.添加值:localStorage.setItem("key","value")

2.读取值:localStorage.getItem("key")  --->return  value

3.删除单个值:localStorage.removeItem("key")   --->删除key和key对应的value

4.清空所有键值对:localStorage.clear()

5.求键值对个数:localStorage.length   --->return 有几个键值对

6.获取第n个键值对的key:localStorage.key(n)

如果给已有的key重复赋值会覆盖原有值  --->也就是增删改查中的改

sessionStorage

它的增删改查和localStorage一样,语法都是相同的。唯一不同的就是他们存储数据的生命周期

复杂数据类型的存储

我们可以存储变量、值到浏览器内,那如果我们需要存储一个对象呢?我们都知道对象也是以键对值的方式存储的,如果我们直接把对象当作value值存储肯定会报错。

这时候我们引入两个语法
1.将复杂数据类型转化为字符串的JSON.stringify(复杂数据类型变量)
2.将转换后的字符串还原为复杂数据类型JSON.parse(需要转换的字符串)

如果在第一个语法中,对象或者数据里面存储了函数、undefined、循环引用的时候,函数会被省略,undefined会存储为null,循环引用会报错。
循环引用就是对象a,b。a对象包含b,b对象包含a
在第二个语法中,字符串必须符合对象或者数组的格式才可以转换为原来的,不然也会报错

const obj={
  name:"xxx",
  age:18,
  output:function(){
    console.log(`我今年${this.age}岁,我叫${this.name}`)
  },
  alpha:undefined
}
localStorage.setItem("user",JSON.stringify(obj))
console.log(localStorage.getItem("user"))

 在这个案例中,我们最后打印到控制台的value是

这也就说明了,在转换的存储的过程中函数和未定义的都会省略掉。并且再转化为原来的格式也会丢失掉函数和undefined。

正则表达式

什么是正则表达式

正则表达式feifeifeifeifeifeichang重要,它可以匹配我们的数据是否符合某种规范,我们在注册账户的时候都会有格式的要求,这个就是正则表达式的运用

JavaScript的正则表达式都是使用  //  包起来的
可以直接匹配某些文字,比如我想在“我高数挂科了”这样一句话中匹配 挂科 这两个字
我们就可以直接写一个正则表达式 /挂科/  --》正则不加引号

然后使用test()进行匹配,匹配成功返回true否则返回false

const regex = /挂科/
const str = "我高数挂科了"
regex.test(str)  //返回true

这种方法只能匹配一段字符串里面是否有我们想要的信息,但是有些情况下我们要的是这个字符串只有我们想要的信息。这时候就需要两个符号 ^ 和 $
^ 从字符串开头开始检测,也就是以什么开头
$ 匹配字符串结尾,也就是以什么结尾
对于刚才的示例,如果regex是  /^挂科/ 那它的返回值就是false,因为  我高数挂了  这句话的开头是我,不符合我们的正则
又或者是/挂科$/  返回值依旧是false,因为结尾不是挂科,而是   了

他们组合起来就是限制这个字符串必须是挂科这两个字,多了少了都是false。
 

元字符和字符类

我们上面说的^和$都是元字符,类似的元字符还有很多
.  --》表示匹配除了换行符之外的所有单个字符
*  --》匹配前一个元素零次或多次。前提是这个元素需要是连贯的
+  --》匹配前一个元素至少一次,
?--》匹配前一个元素零次或者一次
{n,m} --》匹配前一个元素最少n次最多m次
{n}  --》匹配n次
[ ] --》匹配方括号内的任意字符,就是说方括号可以写很多字符,只要我们匹配的字符出现在了这个方括号内就算匹配成功
|  --》或,a|b匹配a或者b

还有字符类
\d  --》匹配一个数字,等价于[0-9]    如果想匹配五位数的数字就可以:\d{5}
\D --》匹配一个非数字
\w  --》匹配一个字母数字或者下划线,等价于[A-Za-z0-9_]
\W  --》匹配一个非字母数字下划线
\s  --》匹配一个空白字符,比如空格、制表符、换行符
\S  --》匹配一个非空白字符

我们在使用正则的时候基本都是使用以下几个方法
1.text()  --》这个属于正则表达式的方法,我们使用正则表达式去匹配字符串
使用方法:正则.test(字符串)  --》返回true或者false
2.match()  --》这个属于字符串方法
使用方法:字符串.match(正则)  --》返回匹配到的结果,多个符合项只会返回第一个匹配上的
3.replace()  --》使用新的值替换符合条件的值
使用方法:字符串.replace(正则,"替换物")  --》返回一个字符串,多个符合选项只会替换第一个
4.split()  --》分割字符串
使用方法:str.split(正则)  -->以符合正则的元素为断点进行切割,这个元素也会被割走,返回一个数组,数组里面存储的是切割好的元素们

2.3方法里面都是只能匹配一个,如果有很多个需要匹配的就应该使用修饰符了,修饰符书写的位置都是在整个正则的后面----》/  /修饰符
修饰符有三个
第一个是--》g   全局匹配,匹配输入字符串中所有的匹配项
第二个是--》i  不区分大小写匹配
第三个是--》 m  多行匹配,它会让^$从整个的开头和结尾变为匹配每一行的开头和结尾

正则表达式大部分就是这些了,但是在日常使用的时候我们都是使用ai或者专门写正则的网站来写的。

箭头函数

我们之前写的函数有两种,第一种是又名函数 function fn(){},第二种是匿名函数 function(){}
今天学的箭头函数是  () => {} 
箭头函数的括号的作用和其他函数相同,都是形参列表。
用法1://这种用法是在有参数的时候用的,没有参数小括号里面就什么都不写

(a,b) =>{
let c
c = a+b
return c
 }


用法2://这种用法是函数体只有一句代码并且直接返回结果,可以省略大括号
 

(a,b) => a+b
 

箭头函数没有自己的this,它会继承上下文的this

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

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

相关文章

物联网网关Web服务器--CGI开发实例BMI计算

本例子通一个计算体重指数的程序来演示Web服务器CGI开发。 硬件环境&#xff1a;飞腾派开发板&#xff08;国产E2000处理器&#xff09; 软件环境&#xff1a;飞腾派OS&#xff08;Phytium Pi OS&#xff09; 硬件平台参考另一篇博客&#xff1a;国产化ARM平台-飞腾派开发板…

【论文+源码】diffuseq使用扩散模型和diffuseq-v2的序列文本生成序列,并且桥接离散和连续的文本空间,用于加速SEQ2SEQ扩散模型。

这篇论文介绍了一种名为DIFFUSEQ的新型扩散模型&#xff0c;专门针对序列到序列&#xff08;SEQ2SEQ&#xff09;文本生成任务进行设计。尽管扩散模型在视觉和音频等连续信号领域取得了成功&#xff0c;但在自然语言处理特别是条件生成方面的适应仍然未被广泛探索。通过广泛的评…

2024年度总结:技术探索与个人成长的交织

文章目录 前言年度创作回顾&#xff1a;技术深耕与分享数据库技术&#xff1a;MySQL 与 MyBatisJava 及相关技术栈计算机网络&#xff1a;构建网络知识体系思维方式的转变&#xff1a;构建技术知识体系的桥梁 项目实践&#xff1a;人工智能与智慧医疗的碰撞生活与博客的融合与平…

如何使用LDAP-Monitoring-Watchdog实时监控 LDAP 目录中记录修改

关于LDAP-Monitoring-Watchdog LDAP-Monitoring-Watchdog是一种用于实时监控 LDAP 目录中记录更改的工具&#xff0c;该工具能够与Linux兼容&#xff0c;用于检测目录变化&#xff0c;为管理员和安全研究人员提供对添加、修改和删除的可见性。 该工具提供了一种机制来跟踪和可…

Cloudflare通过代理服务器绕过 CORS 限制:原理、实现场景解析

第一部分&#xff1a;问题背景 1.1 错误现象复现 // 浏览器控制台报错示例 Access to fetch at https://chat.qwenlm.ai/api/v1/files/ from origin https://ocr.doublefenzhuan.me has been blocked by CORS policy: Response to preflight request doesnt pass access con…

深入理解动态规划(dp)--(提前要对dfs有了解)

前言&#xff1a;对于动态规划&#xff1a;该算法思维是在dfs基础上演化发展来的&#xff0c;所以我不想讲的是看到一个题怎样直接用动态规划来解决&#xff0c;而是说先用dfs搜索&#xff0c;一步步优化&#xff0c;这个过程叫做动态规划。&#xff08;该文章教你怎样一步步的…

速通Docker === Docker Compose

目录 Docker Compose 简介 Docker Compose 常用命令 使用 Docker Compose 启动 WordPress 普通启动方式&#xff08;使用 Docker 命令&#xff09; 使用 Docker Compose 启动 Docker Compose 的特性 Docker Compose 简介 Docker Compose 是一个用于定义和运行多容器 Dock…

知识体系_统计学_03_描述性统计_概括性度量

对数据的概括性度量可从三方面进行测量和描述&#xff1a;集中趋势、离中趋势和分布形态。 集中趋势&#xff0c;反映的是各数据向其中心值靠拢或聚集的程度&#xff1b;离中趋势&#xff0c;反映的是数据的离散程度&#xff0c;远离中心值的趋势&#xff1b;分布形态反映的是…

HackTheBox靶机:Sightless;NodeJS模板注入漏洞,盲XSS跨站脚本攻击漏洞实战

HackTheBox靶机&#xff1a;Sightless 渗透过程1. 信息收集常规探测深入分析 2. 漏洞利用&#xff08;CVE-2022-0944&#xff09;3. 从Docker中提权4. 信息收集&#xff08;michael用户&#xff09;5. 漏洞利用 Froxlor6. 解密Keepass文件 漏洞分析SQLPad CVE-2022-0944 靶机介…

Qt Creator 15.0.0如何更换主题和字体

1.打开Qt Creator 15.0.0 (Community)&#xff0c; 2.点击编辑栏3.点击Preferences... 4.修改主题&#xff0c;点击环境&#xff0c;修改Theme:栏 5.修改字体大小&#xff0c;点击文本编辑器&#xff0c;修改字号栏。&#xff0c;修改Theme:栏

深度强化学习:PPO

深度强化学习算法&#xff1a;PPO 1. Importance Sampling 先说一下什么是采样&#xff1a;对于一个随机变量&#xff0c;我们通常用概率密度函数来描述该变量的概率分布特性。具体来说&#xff0c;给定随机变量的一个取值&#xff0c;可以根据概率密度函数来计算该值对应的概…

亚博microros小车-原生ubuntu支持系列:11手指控制与手势识别

识别框架还是沿用之前的了MediaPipe Hand。 背景知识不摘重复&#xff0c;参见之前的&#xff1a;亚博microros小车-原生ubuntu支持系列&#xff1a;10-画笔-CSDN博客 手指控制 src/yahboom_esp32_mediapipe/yahboom_esp32_mediapipe/目录下新建文件10_HandCtrl.py&#xff…

OpenCV:在图像中添加高斯噪声、胡椒噪声

目录 在图像中添加高斯噪声 高斯噪声的特性 添加高斯噪声的实现 给图像添加胡椒噪声 实现胡椒噪声的步骤 相关阅读 OpenCV&#xff1a;图像处理中的低通滤波-CSDN博客 OpenCV&#xff1a;高通滤波之索贝尔、沙尔和拉普拉斯-CSDN博客 OpenCV&#xff1a;图像滤波、卷积与…

【模拟集成电路】锁相环(phase-locked loops,PLL)设计_环形振荡器相关(简)

0. 前言 未来将会不定时更新PLL相关的文章&#xff0c;主要目的是作为个人的学习笔记&#xff0c;关于锁相环的基础&#xff0c;可以参考《模拟CMOS集成电路设计_Behzad Razavi》后面几章的内容&#xff0c;下面的文章主要参考书籍是的英文书籍《DESIGN OF CMOS PHASE‑LOCKED …

Qt简单迷宫游戏

目录 你将学到你将准备你将改变你将设计你将编程开始界面游玩界面胜利界面其它bug修复 你可扩展下一篇博客要说的东西 你将学到 Qt中QKeySequence对象的基本创建Qt中QShortcut对象的基本应用Qt中QSoundEffect对象的基本应用 你将准备 在开始制作Qt简单迷宫游戏之前&#xff…

SSM电子商城系统

&#x1f345;点赞收藏关注 → 添加文档最下方联系方式咨询本源代码、数据库&#x1f345; 本人在Java毕业设计领域有多年的经验&#xff0c;陆续会更新更多优质的Java实战项目希望你能有所收获&#xff0c;少走一些弯路。&#x1f345;关注我不迷路&#x1f345; 项目视频 电…

springboot3 集成 knife4j(接口文档)

提示&#xff1a;文章是集成 knife4j&#xff0c;而非 swagger2 或者 swagger3&#xff0c;效果如图 文章目录 前言一、添加依赖二、如何集成1.配置文件2.注解部分1.Tag2.Operation3.Parameter4.Schema 3.使用 总结 前言 提示&#xff1a;&#xff1a;大家在开发阶段&#xff…

亚博microros小车-原生ubuntu支持系列:7-脸部检测

背景知识 官网介绍&#xff1a; Face Mesh - mediapipe mpFaceMesh.FaceMesh() 类的参数有&#xff1a;self.staticMode, self.maxFaces, self.minDetectionCon, self.minTrackCon staticMode:是否将每帧图像作为静态图像处理。如果为 True&#xff0c;每帧都会进行人脸检测…

写作利器:如何用 PicGo + GitHub 图床提高创作效率

你好呀&#xff0c;欢迎来到 Dong雨 的技术小栈 &#x1f331; 在这里&#xff0c;我们一同探索代码的奥秘&#xff0c;感受技术的魅力 ✨。 &#x1f449; 我的小世界&#xff1a;Dong雨 &#x1f4cc; 分享我的学习旅程 &#x1f6e0;️ 提供贴心的实用工具 &#x1f4a1; 记…

thingsboard 动态报警

前言 考虑将报警上下限写入设备属性&#xff0c;设备遥测数据与设备属性实时做报警逻辑。这样做的好处在于&#xff0c;可以动态修改设备属性&#xff0c;进而修改设备报警触发上下限。 1、修改设备属性 基于mq &#xff0c;向设备写入属性。 topic v1/devices/me/attribut…