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

数组和字符串的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() 过滤返回一个符合条件的新数组

...
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 找到数组中的对应项 → 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

// 综合案例,购物车全选反选功能
 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为初始位置

<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.kler.cn/a/387170.html

相关文章:

  • 009_SSH_Mysql图书管理系统(学生注册 借书 还书 绵阳)——lwplus87(免费送)
  • 《重学Java设计模式》之 原型模式
  • Selenium+Pytest自动化测试框架 ------ 禅道实战
  • ManiSkill学习笔记
  • 分段式爬虫和数据采集有什么关系
  • MySQL数据库:本地部署数据库以及安装彩虹猫【Navicat】
  • 华为OD机试真题-矩形绘制
  • 跨线程GCHandle,如何使用PinnedIntArray等结构来管理内存,以及如何确保在处理完成后释放资源。
  • 软件知识:什么是软件工程?
  • 【前端】Svelte:组件封装与使用
  • 校园周边美食探索及分享平台
  • C#里使用预定义函数来对数组进行翻转
  • 美格智能5G车规级通信模组: 5G+C-V2X连接汽车通信未来十年
  • [产品管理-60]:产品的情感化设计与常用工具:感性工学、情感分析、神经网络法、微软反应卡、突发情绪法
  • jmeter结合ansible分布式压测--1数据准备
  • 使用docker形式部署jumpserver
  • oracle-函数-grouping sets(x1,x2,x3...)的妙用
  • Go语言开发商城管理后台-GoFly框架商城插件已发布 需要Go开发商城的朋友可以来看看哦!
  • 【wpf】ResourceDictionary 字典资源的用法
  • 系统架构师2023版:习题
  • 七大AI知识库工具概览
  • 搜维尔科技:【煤矿虚拟仿真】煤矿企业、高校、科研单位-多语言支持、数字孪生、交互式学习体验
  • Windows10 下通过 Visual Studio2022 编译 openssl 3.4
  • go语言使用总结(持续更新)
  • 前端开发利器:npm 软链接
  • MYSQL-显示错误信息ERRORS 的语句(十七)