ES6-数组新增方法map,filter,reduce,some,every,find

数组新增方法
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}

你可能感兴趣的:(javascript前端es6)