数组迭代方法

80 阅读2分钟

一起养成写作习惯!这是我参与「掘金日新计划 · 4 月更文挑战」的第3天,点击查看活动详情

数组迭代-map()

 // map() 产生一个由回调函数返回值组成元素的新数组
       let arr = [111,222,333,444]
       let newArr = arr.map(function(a){
         console.log(a)
         let num = a*100
         return num
       })
       console.log(arr)
       console.log(newArr)
       
       // 简写
       let newArr2 = arr.map(a => a * 100)
       console.log(newArr2)

数组迭代-filter()

 // filter():返回一个新数组。数组中的元素,在回调函数中返回值为true组成的当前项
       let arr = [1,2,3,4,5,6,7,8,9]
       // 取出所有3的倍数
       let newArr = arr.filter(n => {
         if(n % 3 == 0)
         return 1
       })
       console.log(newArr)

数组迭代-forEach → 常用

 // forEach():没有返回值,类似for循环
 let arr = ['aaa','bbb','ccc','ddd']
 ​
 //循环
 let a = arr.forEach(n => {
   console.log(n)  
 })
 ​
 console.log(a)  
 // aaa
 // bbb
 // ccc
 // ddd
 //undefined -> forEach没有返回值
 ​

数组迭代-some

 // some(): 类似someone。检测数组中是否存在满足条件的值,返回布尔类型
 // 一旦当前项返回true,立即停止循环
 const arr = [1,2,3,4,5,6,7,8,9]
 ​
 // 数组中是否有7
 let a = arr.some(n => {
   if(n == 7){
     return true
   }
 })
 console.log(a)
 ​
 // 简写
 let b = arr.some(n => n == 7)
 console.log(b)
 ​
 ​

数组迭代-every

 //every():场景 : 判断数组中是否所有元素都满足条件
 // 返回一个boolean值
 // 它也具有停止循环的功能
 const score = [60,88,62,81,99,67,85]
 ​
 // 判断是全部及格
 let a = score.every(n => n >= 60 )
 console.log(a)

数组迭代-findIndex

 // findIndex():获取某个元素下标
 // 应用场景: 与 indexOf() 类似 . 但是findIndex一般用于对象数组
 ​
 const arr = [
   {name:'王五',age:40},
   {name:'张三',age:22},
   {name:'李四',age:18},
   {name:'张三',age:30},
 ]
 ​
 let a = arr.findIndex((value,index) => {
   if(value.name == '张三')
     return true
 })
 console.log(a)
 ​
 ​
 // find():查元素
 let b = arr.find(value => value.name == '李四')
 console.log(b)

数组迭代-includes

 // includes():用来判断一个数组是否包含一个指定的值
 const arr = [111,222,333,444]
 ​
 let a = arr.includes('bbb')
 console.log(a)  // false
 ​
 let b = arr.includes(111)
 console.log(b)  // true
 ​
 // 拓展 indexOf():同样参数是具体值,不是函数,返回索引值
 let i = arr.indexOf('aaa')
 console.log(i)  // 查询不到,返回-1

数组迭代-reduce

 // reduce():给每一个元素执行一次回调
 // 应用场景:数组求和、求数组最大值
 ​
 let arr = [-10,-20,-30,-40,-50,-60,-70,-80]
 ​
 // previousValue(sum):上一次回调的返回值,默认是第一个元素
 // value :当前元素值
 // index:当前下标
 /* let res = arr.reduce((sum,value,index)=>{
   console.log(sum,value,index)
   return sum+value
 },0) */  // 这个语法遇到空数组会报错,加个0可以定义默认值
 ​
 //求最大值
 let res1 = arr.reduce((previousValue,value)=> {
   if(previousValue>value)
     return previousValue
   else
     return value
 },-Infinity)
 console.log(res1)