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

数组和字符串的es6新方法使用和综合案例

文章目录

  • 一、数组
    • 1.forEach() 对数组中的每个元素执行回调函数,无返回值。
    • 2.map() 通过对数组中的每个元素执行回调函数生成新的数组
    • 3.filter() 过滤返回一个符合条件的新数组
    • 4.find() 返回符合条件的第一个数组元素,如果不存在则返回undefined
    • 5.every() 检测数组中所有元素是否都符合条件,返回布尔值Boolean
    • 6.reduce() 数组求和,0为初始位置
    • 7.fill() 把数组元素重置为指定的值,会改变原数组
    • 8.includes()检测数组是否包含指定元素,返回布尔值。
    • 9.copyWithin()从数组中复制元素到指定位置
    • 11.indexOf()返回在数组中找到的第一个元素的索引,如果不存在则返回 -1。
    • 12.lastIndexOf():返回在数组中找到的最后一个元素的索引,如果不存在则返回 -1。
    • 13.some()检测数组中是否有元素符合条件,返回布尔值。
    • 14.findIndex():返回符合条件的第一个数组元素的索引,如果不存在则返回-1。
    • 16.sort()按升序排列数组中的元素,改变原数组
    • 17.shift() 从数组开头移除一个元素,并返回移除的元素,
    • 18.unshift()向数组开头添加一个或多个元素,并返回新的长度
    • 19.push() 向数组末尾添加一个或多个元素,并返回新的长度
    • 20.pop()从数组未尾移除一个元素
    • 21.slice()返回数组的一部分,不会改变原数组
    • 22. splice()向/从数组中添加/删除项目,然后返回被删除的项目
    • 23.concat():连接两个或更多数组,并返回结果,不改变原数组。
    • 24.join()把数组元素拼接成一个字符串,并返回结果
    • 25.reverse()颠倒数组中元素顺序,改变原数组
  • 二、字符串
    • split()拆分字符串。通过指定分隔符对字符串进行切片,并返回分割后的字符串列表
    • replace()字符串替换,返回一个新的字符串,但并不改变字符串本身
    • replaceAll()
    • charAt()返回指定位置的字符。原始字符串不变
    • endsWith()
    • indexOf()
    • includes()
    • match()
    • search()
    • slice()
    • startsWith()
    • trim()
    • valueOf()
    • toString()

一、数组

1.forEach() 对数组中的每个元素执行回调函数,无返回值。

 numList:[1,2,3,4,5],newList:[],//变成1,4,9,16,25getNewList(){this.numList.forEach(item=>{this.newList.push(item*item)})}

2.map() 通过对数组中的每个元素执行回调函数生成新的数组

 numList:[1,2,3,4,5], //变成1,4,9,16,25
getNewList(){this.numList = this.numList.map(item=>item*item)console.log(this.numList)
}

3.filter() 过滤返回一个符合条件的新数组

...
list:[1,0,2,0,3,0,4,0,5,0]
...
methods:{del(){this.list=this.list.filter(item=>item !=0)//console.log(this.list)//打印出来的新数组就是[1,2,3,4,5]},// 综合案例,购物车产品数量加减}

4.find() 返回符合条件的第一个数组元素,如果不存在则返回undefined

add (id) {// 1. 根据 id 找到数组中的对应项 → findconst fruit = this.fruitList.find(item => item.id === id)// 2. 操作 num 数量fruit.num++},
sub (id) {// 1. 根据 id 找到数组中的对应项 → findconst fruit = this.fruitList.find(item => item.id === id)// 2. 操作 num 数量fruit.num--
}

5.every() 检测数组中所有元素是否都符合条件,返回布尔值Boolean

// 综合案例,购物车全选反选功能computed: {// 默认计算属性:只能获取不能设置,要设置需要写完整写法// isAll () {//   // 必须所有的小选框都选中,全选按钮才选中 → every//   return this.fruitList.every(item => item.isChecked)// }// 完整写法 = get + setisAll: {get () {return this.fruitList.every(item => item.isChecked)},set (value) {// 基于拿到的布尔值,要让所有的小选框 同步状态this.fruitList.forEach(item => item.isChecked = value)}},}

6.reduce() 数组求和,0为初始位置

<p>{{total}}</p>
...
arr:[1,2,3,4,5,6]
...
computed:{total(){return this.arr.reduce((sum,item)=> sum + item,0)},// 统计选中的总数 reducetotalCount () {return this.fruitList.reduce((sum, item) => {if (item.isChecked) {// 选中 → 需要累加return sum + item.num} else {// 没选中 → 不需要累加return sum}//简写三元表达式// return item.isChecked ? sum + item.num * item.price : sum}, 0)},},

7.fill() 把数组元素重置为指定的值,会改变原数组

用于填充一个数组

arr:[1,2,3,4,5],getNewList(){//1、fillValue:必须填充的值//2、start:可选,开始填充的位置;如果是负数,则表示从数组末尾开始计数。默认值为0//3、end:可选,结束填充的位置(不包括该位置。)默认值为array.lengththis.arr.fill(1,3,5)console.log(this.arr)//1,2,3,1,1
}

8.includes()检测数组是否包含指定元素,返回布尔值。

includes()方法两个参数:
1、searchElement:必须,要查找的元素
2、fromIndex:可选,开始查找的位置;如果是负数,则从数组末尾开始计数;默认值为0

arr:[1,2,3,4,5],console.log(this.arr.includes(2))//true
console.log(this.arr.includes(2,3))//false
console.log(this.arr.includes(2,-2))//false,从末尾往后边查找,2再-4的位置

9.copyWithin()从数组中复制元素到指定位置

arr:[1,2,3,4,5],console.log(this.arr.copyWithin(0,4))//[5,2,3,4,5]
//从下标4开始复制到下标0的位置

11.indexOf()返回在数组中找到的第一个元素的索引,如果不存在则返回 -1。

区分大小写,并且不会检查NaN值

arr:[1,2,3,4,5],console.log(this.arr.indexOf(4))//输出4的下标3
console.log(this.arr.indexOf(0))//没有找到0,输出-1
console.log(this.arr.indexOf(3,2))//输出3的下标2
console.log(this.arr.indexOf(3,-1))//从数组末尾最后一个开始往后查找,没有找到输出-1
console.log(this.arr.indexOf(3,-4))//从数组末尾第四个开始往后查找,输出3的下标2

12.lastIndexOf():返回在数组中找到的最后一个元素的索引,如果不存在则返回 -1。

arr:[1,1,2,2,4,4],console.log(this.arr.lastIndexOf(4))//输出最后一4的下标5
console.log(this.arr.lastIndexOf(0))//没有找到0,输出-1
console.log(this.arr.lastIndexOf(2,2))//从数组下标2开始往前查找,输出2
console.log(this.arr.lastIndexOf(3,-1))//从数组末尾最后一个开始往前查找,输出6
console.log(this.arr.lastIndexOf(3,-2))//从数组末尾第二个开始往前查找,没有找到输出-1

13.some()检测数组中是否有元素符合条件,返回布尔值。

arr:[1,1,2,2,4,4],let res = this.arr.some(item=>{return item > 4})console.log(res) //false

14.findIndex():返回符合条件的第一个数组元素的索引,如果不存在则返回-1。

不会改变原数组,并且不会检测NaN值

arr:[1,1,2,2,4,4],
let res1 = this.arr.findIndex(item=>{return item > 1})console.log(res1) //输出2
let res2 = this.arr.findIndex(item=>{return item > 5})console.log(res2) //输出-1

16.sort()按升序排列数组中的元素,改变原数组

arr:[5,2,4],
//升序
let res = this.arr.sort((a,b)=>{return a-b})console.log(res) //[2,4,5]
//降序
let res = this.arr.sort((a,b)=>{return b-a})console.log(res) //[5,4,2]

17.shift() 从数组开头移除一个元素,并返回移除的元素,

arr:[1,2,3,4,5],this.arr.shift(1)
console.log(this.arr) //[2,3,4,5]

18.unshift()向数组开头添加一个或多个元素,并返回新的长度

arr:[1,2,3,4,5],this.arr.unshift(1)
console.log(this.arr) //[1,1,2,3,4,5]

19.push() 向数组末尾添加一个或多个元素,并返回新的长度

arr:[1,2,3,4,5],this.arr.push(1)
console.log(this.arr) //[1,2,3,4,5,1]

20.pop()从数组未尾移除一个元素

arr:[1,2,3,4,5],this.arr.pop(1)
console.log(this.arr) //[1,2,3,4,5,1]

21.slice()返回数组的一部分,不会改变原数组

start:包含起始位置索引
end:不包含结束位置索引

arr:[1,2,3,4,5],let res = this.arr.slice(1,3)
console.log(res) //[2,3]

22. splice()向/从数组中添加/删除项目,然后返回被删除的项目

在这里插入代码片

23.concat():连接两个或更多数组,并返回结果,不改变原数组。

 arr:[1,2,3,4,5],//从索引1开始,删除一个元素this.arr.splice(1,1)console.log(this.arr) //[1,3,4,5]arr2:[1,2,3,4,5],//从索引1开始,删除0个,并添加6,7this.arr2.splice(1,0,6,7)console.log(this.arr2) //[1,6,7,2,3,4,5]

24.join()把数组元素拼接成一个字符串,并返回结果

arr:[1,2,3,4,5],console.log(this.arr.join())    //1,2,3,4,5
console.log(this.arr.join(''))  //12345
console.log(this.arr.join('/')) //1/2/3/4/5

25.reverse()颠倒数组中元素顺序,改变原数组

arr:[1,2,3,4,5],console.log(this.arr.reverse())    //[5,4,3,2,1]

二、字符串

split()拆分字符串。通过指定分隔符对字符串进行切片,并返回分割后的字符串列表

str:'12345',
console.log(this.str.split(''))    //['1', '2', '3', '4', '5']str2:'1/2/3/4/5',
console.log(this.str2.split('/'))    //['1', '2', '3', '4', '5']

replace()字符串替换,返回一个新的字符串,但并不改变字符串本身

str:'12345',
console.log(this.str.replace(/2/i,"1"))    //"11345"

replaceAll()

在字符串中用一些字符替换另一些字符,或替换一个与正则表达式匹配的子串,该函数会替换所有匹配到的子字符串。该方法不会改变原始字符串。

str:"1abc1de",
//将1换成h
let res = this.str.replaceAll('1','h')
//或者 let res = this.str.replace(/1/g,'h')console.log(res) //habchde

charAt()返回指定位置的字符。原始字符串不变

str:"abcde",let res = this.str.charAt(2)
console.log(res) // 返回下标为2的字符串c

endsWith()

判断当前字符串是否以指定的字符串结尾(区分大小写)。返回 true 或 false

indexOf()

返回某个指定的字符串值在字符串中首次出现的位置。没有找到匹配的字符串则返回 -1

//取地址后边拼接的字符串
const url = window.location.search
const index = url.indexOf("=") //找到字符串下标
if(index!=-1){this.paramValue = url.substring(index+1)
}

includes()

判断字符串是否包含指定的子字符串。找到匹配的字符串则返回true,否则返回false。
与数组的使用方法一样

match()

在字符串内检索指定的值,或找到一个或多个正则表达式的匹配

str:"I have 2 cats and 3 dogs.",
let res = this.str.match(/\d+/g)
console.log(res) //['2', '3']str:"1abc2345",
let res = this.str.match(/a/)
console.log(res)
//['a', index: 1, input: '1abc2345', groups: undefined]let res = this.str.match(/a/g)console.log(res)//['a']

search()

检索字符串中指定的子字符串,或检索与正则表达式相匹配的子字符串。如果没有找到任何匹配的子串,则返回 -1。

str:"1abc2345",
let res = this.str.search(/a/g)
let res2 = this.str.search(/6/g)
console.log(res)  //a的下标1
console.log(res2) //没有6返回-1

slice()

提取字符串的某个部分,并以新的字符串返回被提取的部分
与数组使用方法一样

startsWith()

用于检测字符串是否以指定的子字符串开始。返回 true 或 false。该方法对大小写敏感

str:"abcde",
let res = this.str.startsWith("a")
let res2 = this.str.startsWith("b")
let res3 = this.str.startsWith("b",1)
console.log(res)  //true
console.log(res2) //false
console.log(res3) //true

trim()

用于删除字符串的头尾空白符,空白符包括:空格、制表符 tab、换行符等其他空白符等。trim() 方法不会改变原始字符串。trim() 方法不适用于 null, undefined, Number 类型

valueOf()

返回 String 对象的原始值

let obj = {name:'aa',age:11,valueOf:function(){return this.age}}console.log(obj<1)  //false

toString()

返回一个表示 String 对象的值。通常由js内部调用,而不是由开发者显示调用

let obj = {name:'aa',age:11,toString:function(){return this.name}}console.log(String(obj)) //aaconsole.log(Number(obj)) //NaN

相关文章:

数组和字符串的es6新方法使用和综合案例

文章目录 一、数组1.forEach() 对数组中的每个元素执行回调函数&#xff0c;无返回值。2.map() 通过对数组中的每个元素执行回调函数生成新的数组3.filter() 过滤返回一个符合条件的新数组4.find() 返回符合条件的第一个数组元素&#xff0c;如果不存在则返回undefined5.every(…...

JS语法进阶第一课!—DOM(重点)

1、DOM概念 DOM 是 JavaScript 操作网页的接口&#xff0c;全称为“文档对象模型”&#xff08;Document Object Model&#xff09; 当网页被加载时&#xff0c;浏览器将网页转为一个DOM&#xff0c;并用JS进行各种操作。比如&#xff1a;改变页面中的HTML 元素及其属性&#x…...

Swift 开发教程系列 - 第5章:集合类型

Swift 提供了几种常用的集合类型&#xff0c;用于存储和管理一组数据。这些集合类型包括数组&#xff08;Array&#xff09;、字典&#xff08;Dictionary&#xff09;和集合&#xff08;Set&#xff09;。本章将介绍它们的使用方法及常见操作。 5.1 数组&#xff08;Array&am…...

Spring:Bean(创建方式,抽象继承,工厂Bean,生命周期)

1&#xff0c;Bean的创建 1.1&#xff0c;调用构造器创建Bean 调用Bean类的无参构造函数来创造对象&#xff0c;因此要求提供无参构造函数。在这种情况下class元素是必须的&#xff0c;值就是Bean对象的实现类。 如果采用设值注入&#xff0c;Spring容器将使用默认的构造器来创…...

Flutter中的Extension关键字

目录 前言 一、什么是扩展(Extension) 二、扩展的语法 三、示例:为String 添加扩展方法 四、使用扩展的场景 五、复杂示例:为DateTime添加扩展 前言 在 Dart 和 Flutter 中&#xff0c;extension 关键字允许开发者为现有的类添加新的功能&#xff0c;而无需修改原有类的代…...

transformers 框架使用详解,bert-base-chinese

以 bert-base-chinese 模型为例&#xff0c;模型目录 model_name "C:/Users/Administrator.DESKTOP-TPJL4TC/.cache/modelscope/hub/tiansz/bert-base-chinese" bert-base-chinese 模型大小只有400多兆&#xff0c;参数的量级在百万级别&#xff0c;与现在动辄几十…...

STM32——ADC

目录 1、ADC的介绍 2、ADC主要特征 3、ADC结构与引脚 4、ADC配置流程 5、示例&#xff08;光敏电阻的ADC采样&#xff09; 6、提示 7、结语&#xff1a; 1、ADC的介绍 12位ADC是一种逐次逼近型模拟数字转换器。它有多达18个通道&#xff0c;可测量16个外部和2个内部 信号…...

Unity SRP学习笔记(二)

Unity SRP学习笔记&#xff08;二&#xff09; 主要参考&#xff1a; https://catlikecoding.com/unity/tutorials/custom-srp/ https://docs.unity.cn/cn/2022.3/ScriptReference/index.html 中文教程部分参考&#xff08;可选&#xff09;&#xff1a; https://tuncle.blog/c…...

数据库第五次作业

一要求 二建库建表 触发器 存储过程 三查询 触发器 1 建立触发器&#xff0c;订单表中增加订单数量后&#xff0c;商品表商品数量同步减少对应的商品订单出数量,并测试 测试 2 建立触发器&#xff0c;实现功能:客户取消订单&#xff0c;恢复商品表对应商品的数量 测试 3…...

健身房业务流程优化:SpringBoot解决方案

3系统分析 3.1可行性分析 通过对本健身房管理系统实行的目的初步调查和分析&#xff0c;提出可行性方案并对其一一进行论证。我们在这里主要从技术可行性、经济可行性、操作可行性等方面进行分析。 3.1.1技术可行性 本健身房管理系统采用SSM框架&#xff0c;JAVA作为开发语言&a…...

【产品经理】工业互联网企业上市之路

树根互联2022年6月2日提交招股书之后&#xff0c;因财务资料超过六个月有效期加三个月延长期&#xff0c;2022年9月30日上市审核中止&#xff1b;2022年12月26日树根互联更新了2022年半年度财务资料&#xff0c;又九个月过去了&#xff0c;其上市进程将面临再一次中止。 处于上…...

Java学习教程,从入门到精通,Java对象和类语法知识点(20)

1、Java对象和类语法知识点 类的定义 使用class关键字定义类。类名通常使用大写驼峰命名法&#xff08;PascalCase&#xff09;。类与对象 类是创建对象的模板或蓝图&#xff0c;它定义了对象的属性和行为。对象是类的实例&#xff0c;它包含了类定义的数据&#xff08;属性&am…...

金融场中的量化交易:民锋数据驱动策略的优势解析市

随着科技的发展&#xff0c;量化交易成为金融市场的重要组成部分。民锋公司通过智能算法和大数据分析&#xff0c;设计了一系列量化交易策略&#xff0c;帮助投资者实现科学投资。本文将探讨民锋在数据驱动策略上的优势&#xff0c;并展示如何通过量化模型在复杂的市场中获得收…...

Docker 配置镜像加速

docker 拉取代码时出现 ERROR: failed to solve: node:16: unexpected status from HEAD request to https:// xxxxxx.mirror.aliyuncs.com/v2/library/node/m…...

HTTP慢速攻击原理及解决办法

目录 引言 HTTP慢速攻击原理 解决办法 Nginx Tomcat 华宇TAS IIS 结论 引言 HTTP慢速攻击&#xff08;Slow HTTP Attack&#xff09;是一种拒绝服务攻击&#xff08;DoS&#xff09;&#xff0c;攻击者通过故意缓慢地发送HTTP请求来耗尽服务器资源&#xff0c;导致合法…...

【系统面试篇】进程和线程类(1)(笔记)——区别、通讯方式、同步、互斥、锁分类

目录 一、问题综述 1. 进程和线程的区别&#xff1f; 2. 进程的状态有哪些&#xff1f; 3. 进程之间的通信方式? &#xff08;1&#xff09;管道 &#xff08;2&#xff09;消息队列 &#xff08;3&#xff09;共享内存 &#xff08;4&#xff09;信号量 &#xff08…...

[C++]——哈希(附源码)

目录 ​编辑 ​编辑 一、前言 二、正文 2.1 unorder系列关联式容器 2.1.1 unordered_map 2.1.1.1 unorderer_map的介绍 ①unordered_map的构造 ②unordered_map的容量 ③unordered_map的迭代器 ④unordered_map的元素访问 ⑤unordered_map的查询 ⑥unordered_map的修改操…...

2024中国自动化大会(CAC2024)“智慧化工及复合人才培养”平行会议圆满落幕

2024中国自动化大会于11月1-3日在青岛举行&#xff0c;本次大会由中国自动化学会主办&#xff0c;青岛科技大学&#xff08;简称“青科大”&#xff09;承办。北京和隆优化科技股份有限公司&#xff08;简称“和隆优化”&#xff09;承办了重要的“智慧化工及复合人才培养”平行…...

计算机毕业设计——ssm基于JAVA的求职招聘网站的设计与实现演示录像 2021

作者&#xff1a;程序媛9688开发技术&#xff1a;SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等。 &#x1f31f;文末获取源码数据库&#x1f31f;感兴趣的可以先收藏起来&#xff0c;还有大家在毕设选题&#xff08;免费咨询指导选题&#xff09;&#xff0…...

跨平台Flutter 、ReactNative 开发原理

一、跨平台Flutter开发原理 Flutter是一个跨平台的应用程序开发框架&#xff0c;它允许你使用一组代码库来构建同时运行在Android和iOS上的应用程序。 1.1.Flutter的核心原理基于以下几点&#xff1a; Dart异步、Widget构建块灵活配置、自工化工具链、热重载、Skia图库、Dar…...

qt QToolBar详解

1、概述 QToolBar是Qt框架中的一个控件&#xff0c;用于在工具栏中显示一组操作按钮和其他控件。它提供了一种方便的方式来组织和管理应用程序中的工具和操作。工具栏通常位于软件或应用程序界面的上方&#xff0c;包含一系列常用工具和命令按钮&#xff0c;用于快速访问和执行…...

MongoDB基础介绍以及从0~1语法介绍

目录 MongoDB 教程导读 NoSQL 简介 关系型数据库遵循ACID规则 分布式系统 分布式计算的优点 分布式计算的缺点 什么是NoSQL? 为什么使用NoSQL ? RDBMS vs NoSQL NoSQL 简史 CAP定理&#xff08;CAP theorem&#xff09; NoSQL的优点/缺点 BASE ACID vs BASE N…...

利用Docker Compose构建微服务架构

&#x1f493; 博客主页&#xff1a;瑕疵的CSDN主页 &#x1f4dd; Gitee主页&#xff1a;瑕疵的gitee主页 ⏩ 文章专栏&#xff1a;《热点资讯》 利用Docker Compose构建微服务架构 引言 Docker Compose 简介 安装 Docker Compose 创建项目结构 编写 Dockerfile 前端 Dockerf…...

数据中台一键大解析!

自从互联玩企业掀起了数据中台风&#xff0c;数据中台这个点马上就火起来了&#xff0c;短短几年数据中台就得到了极高的热度&#xff0c;一大堆企业也在跟风做数据中台&#xff0c;都把数据中台作为企业数字化转型的救命稻草&#xff0c;可是如果我告诉你数据中台并不是万能钥…...

MySQL45讲 第十六讲 “order by”是怎么工作的?

文章目录 MySQL45讲 第十六讲 “order by”是怎么工作的&#xff1f;一、引言二、全字段排序&#xff08;一&#xff09;索引创建与执行情况分析&#xff08;二&#xff09;执行流程&#xff08;三&#xff09;查看是否使用临时文件 三、rowid 排序&#xff08;一&#xff09;参…...

智慧商城项目-VUE2

实现效果 项目收获 通过本项目的练习&#xff0c;可以掌握以下内容&#xff1a; 创建项目 ##基本创建 基于 VueCli 自定义创建项目架子,并对相关的配置进行选择 vue create demo-shopping调整目录 删除文件 删除初始化的一些默认文件 src/assets/logo.pngsrc/components…...

音视频入门基础:FLV专题(22)——FFmpeg源码中,获取FLV文件音频信息的实现(中)

本文接着《音视频入门基础&#xff1a;FLV专题&#xff08;21&#xff09;——FFmpeg源码中&#xff0c;获取FLV文件音频信息的实现&#xff08;上&#xff09;》&#xff0c;继续讲解FFmpeg获取FLV文件的音频信息到底是从哪个地方获取的。本文的一级标题从“四”开始。 四、音…...

Chrome与火狐哪个浏览器的性能表现更好

在数字时代&#xff0c;浏览器是我们日常生活中不可或缺的工具。无论是工作、学习还是娱乐&#xff0c;一个好的浏览器都能显著提高我们的效率和体验。市场上有许多优秀的浏览器&#xff0c;其中Google Chrome和Mozilla Firefox无疑是最受欢迎的两款。本文将比较这两款浏览器的…...

uniapp在js方法中,获取当前用户的uid(uni-id-user)表中的用户id

// 1.判断当前用的权限 let uid uniCloud.getCurrentUserInfo().uid //获取当前用户的uid // 用户uid等于发布者id或者用户权限等于admin或者用户角色等于webmaster if (uid this.item.user_id[0]._id || this.uniIDHasRole…...

影响神经网络速度的因素- FLOPs、MAC、并行度以及计算平台

影响神经网络速度的四个主要因素分别是 FLOPs&#xff08;浮点操作数&#xff09;、MAC&#xff08;内存访问成本&#xff09;、并行度以及计算平台。这些因素共同作用&#xff0c;直接影响到神经网络的计算速度和资源需求。 1. FLOPs&#xff08;Floating Point Operations&a…...