JavaScriptEs6 - String类和Array类扩展内容


title: Javascript-ES6扩展写法
date: 2024-12-23 00:12:19

推荐在我的个人博客网站上访问本文章:shenying.website

String 对象扩展

模版字符串

类似字符串的写法,用 ` 来包裹字符串,优点是可以不用反斜杠就能在代码中多行编辑。对于模版字符串来说,反引号内任何空格、换行符都不会被省略。并且可以使用占位变量的写法:

const value = 114514
// 传统派写法
const str = "第一行\n\
第二行:"
// 模版字符串写法明显简洁
const str2 = `第一行
第二行:${value}`
console.log(str, value, '\n')
console.log(str2)

输出

截屏2024-12-23 00.19.17

indexOf() 与 lastIndexOf()

indexOf()

使用格式:

str.indexOf(searchString, position)

该方法用于返回搜索字符串的索引位置,positoin为可选参数(起始位置),也就是从头开始寻找。下面是代码实例:

const str = 'HelloJavaScript'
console.log('a 首次出现的位置:', str.indexOf('a'))
console.log('a 第二次出现的位置:', str.indexOf('a', 7))

输出

输出结果

lastIndexOf()

如果说indexOf()是从左往右在字符串中寻找目标,那么lastIndexOf()就是从右往左,也就是从后面往前找。使用方法:

str.lastIndexOf(searchString, position)

与之对应的,position是可选参数(起始位置),默认从最后开始寻找。

includes()

该方法用于判断某字符串是否“包含”在内,如果存在则返回true否则false。功能和正则表达式的test()方法一致,区别在于可以指定查找开始的索引位置。test()方法做不到这一点。

str.includes(searchString, position)

演示:

const str = 'HelloJavaScript'
console.log('str 字符串中是否存在 Java:', str.includes('Java'))

输出:

输出

startsWith() 与 endsWith()

startsWith()用于判读字符串的开头是否是某个字符串,endsWith()方法用于判断末尾是否是某个字符结尾,返回true或者false

实例:

const str = 'LanQiao Courses'
console.log('str 字符串中是否存在 Java:', str.includes('Java'))
console.log('str 字符串的开头是否存在字符 Lan:', str.startsWith('Lan'))
console.log('str 字符串的结尾是否存在字符 Course:', str.endsWith('Course'))

输出

总结

String类在ES6中有如下扩展方法:

  • indexOf() & lastIndexOf():从某个位置左往右或从右往左查找字串索引。
  • startsWith() & endsWith():查找是否以某个字符串开头或结尾。
  • Includes():从某个位置开始,判断字符串是否为子串。

Array 对象扩展

扩展运算符

使用...在一个数组对象的前面,可以将这个数组的拆开后均摊出来,使用方法:

const variableName = [...value]

value是一个数组,使用...可以将它拆开后摊到数组中,于是乎variableName变成了数组。

使用实例:

const animals = ['兔子🐰', '猫咪🐱']
const zoo = [...animals, '老虎🐯', '乌龟🐢', '鱼🐟']
console.log(zoo)

输出结果:

图片描述

Array.of()

该方法用于创建一个数组:

Array.of(元素0, 元素1, /* ... */, 元素N)

返回一个数组,和正常创建的数组一样。

Array.from()

该方法可以将一个特定格式的对象转换成数组作为返回值:

cosnt arr = Array.from(待转换的对象);

被转换的对象需要如下格式:

const arrLike = { 0: '🍎', 1: '🍐', 2: '🍊', 3: '🍇', length: 4 }
const arr = Array.from(arrLike)

输出:

图片描述

indexOf() 和 lastIndexOf()

使用方法和字符串的查找字串返回索引一样:

arr.indexOf(searchElement, fromIndex)
arr.lastIndexOf(searchElement, fromIndex)

需要说明的是,前者是从前往后,后者是从后往前查找返回找到的索引,如果没有返回-1

find() 和 findLast()

该方法不同于indexOf()的地方在于,可以寻找第一个满足构造方法中条件的值。如果查找失败返回undefined

arr.find(callbackFn, thisArg)
arr.findLast(callbackFn, thisArg)

使用方法:

const arr = [1, 3, 4, 5]
const result = arr.find(function (value) {return value > 2
})
console.log('find() 的结果:', result)

findLast方法是从后往前找。

findIndex() 和 findLastIndex()

这两个方法用于查找满足构造函数的值在数组中的索引。匹配失败返回-1。

使用方法:

arr.findIndex(callbackFn, thisArg)
arr.findLastIndex(callbackFn, thisArg)

对于callbackFn可以按顺序传入下面的参数:

  • element,数组中元素迭代的值。
  • index,迭代值的数组下标。
  • array,被操作数组。

实例:

const arr = ['小猫', '兔子', '小狗', '兔子']
const result = arr.findIndex(function (value) {return value == '兔子'
})
console.log('findIndex() 的结果:', result)

输出:

图片描述

includes()

该方法判断数组中是否有某个元素,返回布尔值。和字符串中的includes()方法一样。

arr.includes(searchElement, fromIndex)

some()

该方法用于判断数组中是否有满足某个条件的值,返回布尔值。

arr.some(callbackFn, thisArg)

回调函数的参数也是按照elementindexarray的顺序可选传入的。

实例:

const arr = [1, 3, 4, 5]
const result = arr.some(function (value) {return value > 3
})
console.log('存在大于 3 的元素?', result)

输出:

图片描述

every()

判断数组中所有的元素是否满足某个条件。参数中callbackFn的使用方法和之前一致,不多赘述。

arr.every(callbackFn, thisArg)

参考实例:

const arr = [1, 3, 4, 5]
const result = arr.every(function (value) {return value > 3
})
console.log('所有元素均大于 3 ?', result)

输出:

图片描述

sort()

对数组进行排序:

arr.sort(compareFn)

实例:

const arr = [2, 3, 4, 8, 1]
const result = arr.sort(function (a, b) {return a - b
})
console.log(result)

对于迭代器中传入的ab有如下解释,如果返回值为负值表示ab前,正值表示ab后,0位置不变。

reserve()

该方法可以反转数组。使用格式:

arr.reverse();

实例:

const arr = ['一', '二', '三', '四']
arr.reverse()
console.log(arr)

输出:

图片描述

fill()

该方法用于指定一个值对数组进行切片填充。

array.fill(value, start, end);

如果不指定startend,默认填充整个数组。

参考:

const arr = ['🐱', '🐶', '🐰']
arr.fill('🐷')
console.log(arr)

输出:

图片描述

map()

该方法可以对数组中的所有元素进行操作后返回成一个新的数组。回调函数的参数表和上方一致。

使用方法:

arr.map(callbackFn, thisArg)

参考:

const arr = [1, 4, 9, 16]
const result = arr.map(function (x) {return x * 2
})
console.log(result)

输出:

图片描述

reduce() 和 reduceRight()

arr.reduce(callbackFn, initialValue)
arr.reduceRight(callbackFn, initialValue)

该方法可以指定一个初始值,迭代数组后返回计算出来的最终值。

实例:

const arr = [1, 2, 3, 4]
const sum = arr.reduce(function (acc, cur) {return acc + cur
}, 0)
console.log(sum) // 10

比如这段代码,指定了初始值为0,每次迭代将这个值加上迭代的元素,最终得到求和的值返回赋给sum

输出:

10

entries()、keys()、values()

使用arr.entries()可以得到包含arr键值对的二维数组。使用keys()可以得到一个包含键的数组,values()得到一个包含所有值的数组。利用这三个数组可以进行针对性的迭代。

特别的,直接输出entries()得到的是一个迭代器,不过你可以直接将它使用扩展运算符均摊到数组中查看。

const arr = ['🐱', '🐶', '🐰', '🐍', '🐦', '🐟']
console.log(arr.entries())

输出:

> Array Iterator {}

使用扩展运算符:

const arr = ['🐱', '🐶', '🐰', '🐍', '🐦', '🐟']
console.log([...arr.entries()])

得到结果:

图片描述

还可以使用for ... of进行迭代:

const arr = ['🐱', '🐶', '🐰', '🐍', '🐦', '🐟']
for (const item of arr.entries()) {console.log(item)
}

图片描述

总结

  • 扩展运算符
  • 两种创建数组的方法:
    • Array.of() 方法:将一组指定的值转换为数组。
    • Array.from() 方法:将类数组对象或者可迭代对象转换为数组。
  • 六种数组查找方法:
    • indexOf()lastIndexOf() 方法:查找指定元素的下标值。
    • find()findLast() 方法:返回数组中满足指定条件的元素的值,未找到则返回 undefined
    • findIndex()findLastIndex() 方法:返回数组中满足指定条件的元素的索引,未找到则返回 -1
  • 三种数组测试方法:
    • includes() 方法:判断数组中是否包含某个元素。
    • some() 方法:测试数组中是否存在至少一个元素满足特定要求。
    • every() 方法:测试数组中是否所有的元素均满足特定要求。
  • 数组实例的其他方法:
    • sort() 方法:给数组中的元素进行排序。
    • reverse() 方法:将数组中的元素进行逆序排列。
    • fill() 方法:用一个固定值去填充数组中指定索引位置的数组值。
    • map() 方法:对数组中的每个元素执行一次回调函数,返回由执行结果构成的新数组。
    • reduce()reduceRight() 方法:依次对数组的每个元素执行回调函数,并传入前一次执行的返回值。
    • entries()keys()values() 方法:返回一个数组迭代器对象。

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

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

相关文章

图书管理系统:提升图书馆服务质量的技术解决方案

可行性分析 在项目进行开发之前,必须要有可行性分析报告,分别从技术角度,经济角度,操作角度上面进行分析,经过可行性分析是实现科学开发的必要步骤。 3.1.1技术可行性 从技术的角度出发,目前采用开发的技术…

Unity中有什么情况下是需要用UniTask替代其他异步方式的吗?

在Unity开发中,是否需要使用UniTask替代其他异步方式(如Coroutine或Task),取决于项目需求、代码风格和性能考量。UniTask是一个第三方库,主要用于优化和简化Unity环境下的异步编程,它提供了诸多优势&#x…

NLP 中文拼写检测开源-01-基于贝叶斯公式的拼写检查器 CSC

拼写纠正系列 NLP 中文拼写检测实现思路 NLP 中文拼写检测纠正算法整理 NLP 英文拼写算法,如果提升 100W 倍的性能? NLP 中文拼写检测纠正 Paper java 实现中英文拼写检查和错误纠正?可我只会写 CRUD 啊! 一个提升英文单词拼…

SpringBoot核心:自动配置

有使用过SSM框架的,还记得曾经在spring-mybatis.xml配置了多少内容吗?数据源、连接池、会话工厂、事务管理,而现在Spring Boot告诉你这些都不需要了,简单的几个注解统统搞定,是不是很方便! 前言 SpringBoo…

重温设计模式--职责链模式

文章目录 职责链模式的详细介绍C 代码示例C示例代码2 职责链模式的详细介绍 定义与概念 职责链模式(Chain of Responsibility Pattern)是一种行为型设计模式,它旨在将请求的发送者和多个接收者解耦,让多个对象都有机会处理请求&a…

微信小程序UI自动化测试实践 !

微信小程序UI自动化测试实践 引言: 随着微信小程序的快速发展,越来越多的企业和开发者开始开发小程序来满足用户的需求。而在开发小程序的过程中,UI自动化测试是一个必不可少的环节,可以帮助开发者减少人工测试的工作量&#xff…

C#在自定义事件里传递数据

通过自定义事件来传值。此种方法适合于写驱动程序。进行数据采集。 对于一般的系统事件,是有两个参数的,一个是sender,一个是EventArgs,对于sender,个事件的触发者,一般指向的是一个控件,但是对…

MacroSan 2500_24A配置

双控制器电源同时按下,切记/切记/切记 默认信息 默认地址:192.168.0.210 输入ODSP授权后设置密码## 配置端口 物理资源–>设备–>网口–>eth-1:0:0或eth-2:0:0 创建存储池 存储资源–>存储池 介质类型:混合(支持机械及SSD)全闪(仅支持SSD) RAID类型:CRAID-P(基于磁…

法学硕士,有哪些专业可以申请呢?

同等学力申请硕士学位 (简称“同等学力申硕”) 是指本科毕业获得学士学位的人员,通过工作之余的时间参与课程的学习, 把专业知识水平提升至研究生毕业的同等水平, 在院校的专业考核和国家统考成绩通过后, 成…

大数据操作实验一

实验一:https://www.hifleet.com/wp/communities/data/hangyundashujujishukechengshiyanzhinan 1.Postgresql 1.1 数据库的对象创建 1.1.1 创建数据库(Database) 鼠标右键database进行创建 1.1.2 创建图(Schema) 鼠标右键schema,然后创建schema图…

Java Spring Boot 项目中嵌入前端静态资源:完整教程与实战案例

言简意赅的讲解Java Spring Boot 中嵌入前端项目的静态资源解决的痛点 之前给大家讲解了如何部署一个前端项目,但大家还是好奇如何部署一个前后端一体项目。将前端构建后的静态资源嵌入 Java Spring Boot 后端项目,是现代全栈开发中一种流行的实践方式。…

独一无二,万字详谈——Linux之文件管理

Linux文件部分的学习,有这一篇的博客足矣! 目录 一、文件的命名规则 1、可以使用哪些字符? 2、文件名的长度 3、Linux文件名的大小写 4、Linux文件扩展名 二、文件管理命令 1、目录的创建/删除 (1)、目录的创建 ① mkdir…

ctfshow web入门文件上传总结

1.web151 前端验证 前端验证&#xff0c;修改html代码&#xff0c;上传还有一句话木马的php文件,之后用蚁剑连接即可找到flag <?php eval($_POST[1])?>2.web152 后端验证&#xff0c;修改mime类型(content-type) burp抓包&#xff0c;修改content-type为image/png …

R9000P键盘失灵解决办法

问题描述 突然&#xff0c;就是很突然&#xff0c;我买的R9000P 2024不到三个月&#xff0c;键盘突然都不能用了&#xff0c;是所有键盘按键都无效的那种。&#xff08;可以使用外接键盘&#xff09; 解决办法 我本科室友说的好哈&#xff0c;全坏全没坏。 &#xff08;该解…

vscode添加全局宏定义

利用vscode编辑代码时&#xff0c;设置了禁用非活动区域着色后&#xff0c;在一些编译脚本中配置的宏又识别不了 遇到#ifdef包住的代码就会变暗色&#xff0c;想查看代码不是很方便。如下图&#xff1a; 一 解决&#xff1a; 在vscode中添加全局宏定义。 二 步骤&#xff1a…

KingbaseES(金仓数据库)入门学习

前言 金仓是一种多进程架构&#xff0c;每一个连接到服务器的会话&#xff0c;在服务器上面都会为该会话分配进程 图形化界面管理 新建数据库名 然后新建一个模式 再创建一个表 新建一个表&#xff0c;然后设置列名 记得要保存 查询数据 也可以新建数据表&#xff0c;用命令…

SpringCloud 入门(3)—— Nacos配置中心

上一篇&#xff1a;SpringCloud 入门&#xff08;2&#xff09;—— 跨服务调度-CSDN博客 Nacos是阿里巴巴开源的服务发现与配置管理基础设施&#xff0c;旨在帮助开发者更轻松地构建云原生应用。它提供了一组简单易用的特性集&#xff0c;支持动态服务发现、配置管理和服务管理…

中地数码亮相2024武汉市数字经济应用场景对接大会

为推动数字经济应用场景供需有效精准对接&#xff0c;加快新技术新产品在汉应用推广&#xff0c;12月16日&#xff0c;由武汉市数据局主办的2024武汉市数字经济应用场景对接暨揭榜挂帅项目发布会成功举行。作为国产GIS基础软件领军企业&#xff0c;中地数码受邀出席作数字赋能产…

《解锁 Python 数据挖掘的奥秘》

《解锁 Python 数据挖掘的奥秘》 一、Python 数据挖掘基础&#xff08;一&#xff09;Python 基础与数据挖掘环境搭建&#xff08;二&#xff09;数据挖掘基本流程概述 二、Python 数据挖掘核心技术&#xff08;一&#xff09;数据收集与预处理技术&#xff08;二&#xff09;常…

如何学习Trustzone

阅读官方文档 ARM 官方文档是学习 Trustzone 最权威的资料来源。例如&#xff0c;ARM Architecture Reference Manual 中详细介绍了 Trustzone 的架构原理、寄存器定义和操作模式等内容。这些文档虽然比较复杂&#xff0c;但能够提供最准确的技术细节&#xff0c;适合在学习过…