- map(映射)1个对一个 进去什么最后return 什么 不会改变原数组,返回一个新的数组,对应参数:item 每次的值,当前索引,原来数组 arr
var arr=[1,2,3,4];
console.log( arr.map((n)=>n*n) );//[1, 4, 9, 16]
console.log( arr.map((n)=>n-1) );//[0, 1, 2, 3]
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.findIndex (索引值) find方法的回调函数可以接受三个参数,依次为当前的值、当前的位置和原数组。
let arr = [1, 4, -5, 10]
let num = arr.findIndex((value,index,arr) => value < 0)
console.log(num) // 2
value代表这个数组的每一项,1,4,-5,10。index代表每一项的索引值,arr代表这个数组[1, 4, -5, 10],然后我们需要返回的是<0的这一项的索引值,即是2了。
5.forEach 循环 (迭代)
//forEach遍历数组,无返回值,不改变原数组,仅仅只是遍历
let arr = [2,3,4,5]
arr.forEach(item=>console.log(item))
6.every
let arr = [1,2,3,4];
let flag= arr.every((item,index,arr) =>item > 1 //结果为false
)
//遍历数组每一项,每一项返回true,则最终结果为true。当任何一项返回false时,停止遍历,返回false。不改变原数组
7.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;
总结:
some、every返回true、false。
map、filter返回一个新数组。
reduce让数组的前后两项进行某种计算,返回最终操作的结果。
forEach 无返回值。
这几个都不改变原数组。