es6数组新增6个方法
1.map (映射)1个对一个 进去什么最后return 什么 不会改变原数组,返回一个新的数组,对应参数:item 每次的值,当前索引,原来数组 arr
例子:
成绩对应等级
let arr =[22,55,67,33,99,70];
let result = arr.map((item,index,arr)=>{
return item>60?'及格':'不及格';
})
console.log(result)
2.reduce (汇总) 1堆对一个 求和或者求平均数
let store = [22,44,33,56,70,83,80]
let total = store.reduce((temp,item,index)=>{
//temp是每次的临时变量是第n次和第n+1次的临时和,item是每次要往上加的值,index是每次循环的index
console.log(temp,item,index)
return temp+item;
})
console.log(total)
要是求平均数 就应该再最后一次时用总数除以数组的长度。
let store = [22,44,33,56,70,83,80]
let total = store.reduce((temp,item,index)=>{
//temp是每次的临时变量是第n次和第n+1次的临时和,item是每次要往上加的值,index是每次循环的index
console.log(temp,item,index)
if(index!=arr.lenth-1){//不是最后一次
return temp+item;
}else{//是最后一次
return (temp+item)/arr.length;
}
})
console.log(total)
3.filter 过滤器 通过返回true或者false来确认最终的结果
let num = [2,4,76,87,35,66];
let result = num.filter(item=>item%3===0)
console.log(result);
4.forEach 循环 (迭代)
//forEach遍历数组,无返回值,不改变原数组,仅仅只是遍历
let arr = [2,3,4,5]
arr.forEach(item=>console.log(item))
5.every
let arr = [1,2,3,4];
let flag= arr.every((item,index,arr) =>item > 1 //结果为false
)
//遍历数组每一项,每一项返回true,则最终结果为true。当任何一项返回false时,停止遍历,返回false。不改变原数组
6.some
var arr = [1,2,3,4];
let num =arr.some((item,index,arr) => {
console.log(item)
return item > 1 //结果为false
})
console.log(num)
//遍历数组每一项,有一项返回true,就返回true,当任何一项返回true时,则停止遍历,返回true;
以上6个方法均为ES6语法,IE9及以上才支持。不过可以通过babel转意支持IE低版本。
以上均不改变原数组。
some、every返回true、false。
map、filter返回一个新数组。
reduce让数组的前后两项进行某种计算,返回最终操作的结果。
forEach 无返回值。