数组新增方法
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) //true
let 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) //false
let 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) //30
let 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}