数组新增办法
filter--过滤器
指定一个函数fun作为参数,遍历原数组,依据fun函数的返回值判断新返回的数组中是否蕴含该元素,返回一个新数组,不扭转原数组
let arr = [1,2,3,4,5,6];let newArr = arr.filter((v,i,arr)=>v%2==0);/*这里return只有一条语句,若加上{},则必须加上return关键字,若不写return关键字,则必须去掉{},否则会出错*//*arguments别离示意:v-以后项的value,i-以后项的index,arr-原数组*/console.log(newArr); //[2,4,6]
map--映射
指定一个函数fun作为参数,遍历原数组,将每个元素与fun函数的返回值进行运算,组成一个新数组返回,不扭转原数组
let arr = [1,3,5,7,9];let newArr = arr.map((v,i,arr)=>++v);/*若这里是v++,则返回[1,3,5,7,9]*//*arguments与filter统一*/console.log(newArr); //[2,4,6,8,10]
reduce--汇总
指定一个函数fun作为参数,遍历原数组,每遍历一遍失去一个与函数fun返回值计算的值作为prev,传递给下一次遍历,参加fun函数返回值计算,遍历实现返回最终的prev值,不扭转原数组
可用于数组求和
let arr = [1,2,3,4,5];let sum = arr.reduce((prev,v,i,arr)=>prev+v);console.log(sum) //15//当数组元素是对象时:let students = [ {name: 'Liane',score: 90}, {name: 'Ann',score: 80}, {name: 'Jack',score: 50}, {name: 'Lisa',score: 70},]let avrScore = students.reduce((prev,v,i)=>{ console.log(prev) //{name: 'Liane',score: 90} //170 //220 //290 console.log(i) //顺次打印 1 2 3 //由此可知,函数刚执行时,会将原数组第一个元素赋值给prev //接下来每一次遍历,会将函数返回值从新赋值给prev return i == 1 ? prev.score + v.score :prev + v.score})/students.length;console.log(avrScore) //72.5
forEach--遍历
指定一个函数fun作为参数,遍历原数组,fun的参数能够间接用来批改原数组,该fun函数没有返回值,不能break,continue。
let arr = [1,2,3,4,5];arr.forEach((v,i,arr)=>{arr[i]=v*2});//console.log(arr) //[2,4,6,8,10]
some--能够用来检测一个数组是不是有元素满足某个条件
指定一个函数fun作为参数,遍历原数组,将遍历的每个元素与fun函数的返回值计算,当有某个元素满足条件则返回true,若所有元素都不满足则返回false
let arr = [1,3,5,8];let boo = arr.some((v,i,arr)=>v%2==0);console.log(boo) //truelet let students = [ {name: 'Liane',score: 90}, {name: 'Ann',score: 80}, {name: 'Jack',score: 50}, {name: 'Lisa',score: 70},];boo = students.some((v)=>{v>60});console.log(boo) //false
every--能够用来查看一个数组是不是所有元素都满足某个条件
指定一个函数fun作为参数,遍历原数组,将遍历的每个元素与fun函数的返回值计算,若所有元素满足条件返回true,若有元素不满足则返回false
let arr = [1,3,5,8];let boo = arr.every((v,i,arr)=>v%2==0);console.log(boo) //falselet let students = [ {name: 'Liane',score: 90}, {name: 'Ann',score: 80}, {name: 'Jack',score: 50}, {name: 'Lisa',score: 70},];boo = students.every((v)=>{v>60});console.log(boo) //false
find--查找,返回数组中第一个符合条件的那一项
指定一个函数fun,遍历原数组,将遍历的每个元素与fun函数的返回值计算,将第一个满足条件的元素作为返回值返回,不扭转原数组。
let arr = [11,21,30,44,50];let result = arr.find((v,i,arr)=>v%2==0);console.log(result) //30let let students = [ {name: 'Lisa',score: 70}, {name: 'Jack',score: 50}, {name: 'Liane',score: 90}, {name: 'Ann',score: 80}];result = students.find(v=>v.score>80);cosnole.log(result); //{name: 'Liane',score: 90}