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

news/2024/11/6 5:28:15 标签: 前端, javascript, 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,25
 getNewList(){
  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() 过滤返回一个符合条件的新数组

javascript">...
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

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

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

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

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

javascript"><p>{{total}}</p>
...
arr:[1,2,3,4,5,6]
...
computed:{
  total(){
    return this.arr.reduce((sum,item)=> sum + item,0)
      },
      // 统计选中的总数 reduce
  totalCount () {
     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.length
   this.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,7
 this.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)) //aa
  console.log(Number(obj)) //NaN

http://www.niftyadmin.cn/n/5740267.html

相关文章

SpringBoot在线教育系统:性能优化策略

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

搭建实验仪器知识库:从产品手册到智慧资源的飞跃

在科研、教学及工业生产领域&#xff0c;实验仪器作为探索未知、验证理论、提升效率的重要工具&#xff0c;其重要性不言而喻。然而&#xff0c;随着技术的不断进步和仪器的日益复杂化&#xff0c;如何高效、准确地使用这些仪器成为了科研人员、技术人员及学生面临的共同挑战。…

大数据-205 数据挖掘 机器学习理论 - 线性回归 最小二乘法 多元线性

点一下关注吧&#xff01;&#xff01;&#xff01;非常感谢&#xff01;&#xff01;持续更新&#xff01;&#xff01;&#xff01; 目前已经更新到了&#xff1a; Hadoop&#xff08;已更完&#xff09;HDFS&#xff08;已更完&#xff09;MapReduce&#xff08;已更完&am…

Android无限层扩展多级recyclerview列表+实时搜索弹窗

业务逻辑&#xff1a; 点击选择&#xff0c;弹出弹窗&#xff0c;列表数据由后台提供&#xff0c;不限层级&#xff0c;可叠加无限层子级&#xff1b; 点击item展开收起&#xff0c;点击尾部icon单选选中&#xff0c;点击[确定]为最终选中&#xff0c;收起弹窗&#xff1b; 搜索…

Flink的环境搭建及使用

在idea中创建一个Maven项目&#xff0c;导入Flink的依赖&#xff0c;在代码中创建Flink环境&#xff0c;编写代码. 如果不想去找flink依赖&#xff0c;就去flink官网&#xff0c;提供了一个mvn的命令&#xff0c;快速下载在本地构建一个flink的项目&#xff0c;可以直接从这个…

【AI落地应用实战】HivisionIDPhotos AI证件照制作实践指南

最近在网上发现了一款轻量级的AI证件照制作的项目&#xff0c;名为HivisionIDPhotos。它利用AI模型实现对多种拍照场景的识别、抠图与证件照生成&#xff0c;支持轻量级抠图、多种标准证件照和排版照生成、纯离线或端云推理、美颜等功能。此外&#xff0c;项目还提供了Gradio D…

gitmakegdb

git git reset 命令 | 菜鸟教程 (runoob.com) 像嫁接一样 make Makefile | 爱编程的大丙 (subingwen.cn) # 举例: 有源文件 a.c b.c c.c head.h, 需要生成可执行程序 app ################# 例1 ################# app:a.c b.c c.cgcc a.c b.c c.c -o app################# 例…

太速科技-634-基于3U PXIe的VU3P FMC+数据接口板

基于3U PXIe的VU3P FMC数据接口板 一、产品概述 板卡是一款基于 3U PXIE 总线架构的高性能数据预处理FMC 载板&#xff0c;具有 1 个 FMC&#xff08;HPC&#xff09;接口&#xff0c;1 个 X8 GTH 背板互联接口&#xff0c;可以实现 1 路 PCIe x8。板卡主控芯片采用Xilin…