数组和字符串的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() 对数组中的每个元素执行回调函数,无返回值。2.map() 通过对数组中的每个元素执行回调函数生成新的数组3.filter() 过滤返回一个符合条件的新数组4.find() 返回符合条件的第一个数组元素,如果不存在则返回undefined5.every(…...

JS语法进阶第一课!—DOM(重点)
1、DOM概念 DOM 是 JavaScript 操作网页的接口,全称为“文档对象模型”(Document Object Model) 当网页被加载时,浏览器将网页转为一个DOM,并用JS进行各种操作。比如:改变页面中的HTML 元素及其属性&#x…...
Swift 开发教程系列 - 第5章:集合类型
Swift 提供了几种常用的集合类型,用于存储和管理一组数据。这些集合类型包括数组(Array)、字典(Dictionary)和集合(Set)。本章将介绍它们的使用方法及常见操作。 5.1 数组(Array&am…...

Spring:Bean(创建方式,抽象继承,工厂Bean,生命周期)
1,Bean的创建 1.1,调用构造器创建Bean 调用Bean类的无参构造函数来创造对象,因此要求提供无参构造函数。在这种情况下class元素是必须的,值就是Bean对象的实现类。 如果采用设值注入,Spring容器将使用默认的构造器来创…...
Flutter中的Extension关键字
目录 前言 一、什么是扩展(Extension) 二、扩展的语法 三、示例:为String 添加扩展方法 四、使用扩展的场景 五、复杂示例:为DateTime添加扩展 前言 在 Dart 和 Flutter 中,extension 关键字允许开发者为现有的类添加新的功能,而无需修改原有类的代…...
transformers 框架使用详解,bert-base-chinese
以 bert-base-chinese 模型为例,模型目录 model_name "C:/Users/Administrator.DESKTOP-TPJL4TC/.cache/modelscope/hub/tiansz/bert-base-chinese" bert-base-chinese 模型大小只有400多兆,参数的量级在百万级别,与现在动辄几十…...

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

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

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

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

【产品经理】工业互联网企业上市之路
树根互联2022年6月2日提交招股书之后,因财务资料超过六个月有效期加三个月延长期,2022年9月30日上市审核中止;2022年12月26日树根互联更新了2022年半年度财务资料,又九个月过去了,其上市进程将面临再一次中止。 处于上…...
Java学习教程,从入门到精通,Java对象和类语法知识点(20)
1、Java对象和类语法知识点 类的定义 使用class关键字定义类。类名通常使用大写驼峰命名法(PascalCase)。类与对象 类是创建对象的模板或蓝图,它定义了对象的属性和行为。对象是类的实例,它包含了类定义的数据(属性&am…...
金融场中的量化交易:民锋数据驱动策略的优势解析市
随着科技的发展,量化交易成为金融市场的重要组成部分。民锋公司通过智能算法和大数据分析,设计了一系列量化交易策略,帮助投资者实现科学投资。本文将探讨民锋在数据驱动策略上的优势,并展示如何通过量化模型在复杂的市场中获得收…...
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慢速攻击(Slow HTTP Attack)是一种拒绝服务攻击(DoS),攻击者通过故意缓慢地发送HTTP请求来耗尽服务器资源,导致合法…...

【系统面试篇】进程和线程类(1)(笔记)——区别、通讯方式、同步、互斥、锁分类
目录 一、问题综述 1. 进程和线程的区别? 2. 进程的状态有哪些? 3. 进程之间的通信方式? (1)管道 (2)消息队列 (3)共享内存 (4)信号量 (…...

[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日在青岛举行,本次大会由中国自动化学会主办,青岛科技大学(简称“青科大”)承办。北京和隆优化科技股份有限公司(简称“和隆优化”)承办了重要的“智慧化工及复合人才培养”平行…...
计算机毕业设计——ssm基于JAVA的求职招聘网站的设计与实现演示录像 2021
作者:程序媛9688开发技术:SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等。 🌟文末获取源码数据库🌟感兴趣的可以先收藏起来,还有大家在毕设选题(免费咨询指导选题)࿰…...
跨平台Flutter 、ReactNative 开发原理
一、跨平台Flutter开发原理 Flutter是一个跨平台的应用程序开发框架,它允许你使用一组代码库来构建同时运行在Android和iOS上的应用程序。 1.1.Flutter的核心原理基于以下几点: Dart异步、Widget构建块灵活配置、自工化工具链、热重载、Skia图库、Dar…...

XCTF-web-easyupload
试了试php,php7,pht,phtml等,都没有用 尝试.user.ini 抓包修改将.user.ini修改为jpg图片 在上传一个123.jpg 用蚁剑连接,得到flag...

AI Agent与Agentic AI:原理、应用、挑战与未来展望
文章目录 一、引言二、AI Agent与Agentic AI的兴起2.1 技术契机与生态成熟2.2 Agent的定义与特征2.3 Agent的发展历程 三、AI Agent的核心技术栈解密3.1 感知模块代码示例:使用Python和OpenCV进行图像识别 3.2 认知与决策模块代码示例:使用OpenAI GPT-3进…...
连锁超市冷库节能解决方案:如何实现超市降本增效
在连锁超市冷库运营中,高能耗、设备损耗快、人工管理低效等问题长期困扰企业。御控冷库节能解决方案通过智能控制化霜、按需化霜、实时监控、故障诊断、自动预警、远程控制开关六大核心技术,实现年省电费15%-60%,且不改动原有装备、安装快捷、…...
大语言模型如何处理长文本?常用文本分割技术详解
为什么需要文本分割? 引言:为什么需要文本分割?一、基础文本分割方法1. 按段落分割(Paragraph Splitting)2. 按句子分割(Sentence Splitting)二、高级文本分割策略3. 重叠分割(Sliding Window)4. 递归分割(Recursive Splitting)三、生产级工具推荐5. 使用LangChain的…...

376. Wiggle Subsequence
376. Wiggle Subsequence 代码 class Solution { public:int wiggleMaxLength(vector<int>& nums) {int n nums.size();int res 1;int prediff 0;int curdiff 0;for(int i 0;i < n-1;i){curdiff nums[i1] - nums[i];if( (prediff > 0 && curdif…...
JDK 17 新特性
#JDK 17 新特性 /**************** 文本块 *****************/ python/scala中早就支持,不稀奇 String json “”" { “name”: “Java”, “version”: 17 } “”"; /**************** Switch 语句 -> 表达式 *****************/ 挺好的ÿ…...

ABAP设计模式之---“简单设计原则(Simple Design)”
“Simple Design”(简单设计)是软件开发中的一个重要理念,倡导以最简单的方式实现软件功能,以确保代码清晰易懂、易维护,并在项目需求变化时能够快速适应。 其核心目标是避免复杂和过度设计,遵循“让事情保…...

Reasoning over Uncertain Text by Generative Large Language Models
https://ojs.aaai.org/index.php/AAAI/article/view/34674/36829https://ojs.aaai.org/index.php/AAAI/article/view/34674/36829 1. 概述 文本中的不确定性在许多语境中传达,从日常对话到特定领域的文档(例如医学文档)(Heritage 2013;Landmark、Gulbrandsen 和 Svenevei…...
管理学院权限管理系统开发总结
文章目录 🎓 管理学院权限管理系统开发总结 - 现代化Web应用实践之路📝 项目概述🏗️ 技术架构设计后端技术栈前端技术栈 💡 核心功能特性1. 用户管理模块2. 权限管理系统3. 统计报表功能4. 用户体验优化 🗄️ 数据库设…...

Mysql中select查询语句的执行过程
目录 1、介绍 1.1、组件介绍 1.2、Sql执行顺序 2、执行流程 2.1. 连接与认证 2.2. 查询缓存 2.3. 语法解析(Parser) 2.4、执行sql 1. 预处理(Preprocessor) 2. 查询优化器(Optimizer) 3. 执行器…...