filter:
filter中的回调函数有一个要求:必须返回一个布尔值
true:当返回值是true时,函数内部会自动将这次回调的num加入新的数组中
false:当返回值是false时,函数内部会过滤这次的num
const nums = [10, 20, 50, 20, 30, 100, 120, 40, 21, 310];
let newNums = nums.filter(function (num) {
return num < 100;
});
console.log(newNums); //[10, 20, 50, 20, 30, 40, 21]
map:
map函数会返回对某个数组内的元素全部进行操作以后的新的数组
let newNums2 = newNums.map(function (n) {
return n * 2;
});
console.log(newNums2); //[20, 40, 100, 40, 60, 80, 42]
reduce:
reduce作用是对数组中的所有的内容进行汇总。
参数共有4个,prev,cur,index,arr,但是常用的只有前两个。
意思分别为:
arr 表示原数组;
prev 表示上一次调用回调时的返回值,或者初始值 init;
cur 表示当前正在处理的数组元素;
index 表示当前正在处理的数组元素的索引,若提供 init 值,则索引为0,否则索引为1;
init 表示初始值。
let total = newNums2.reduce(function (prev, cur,index,arr) {
return prev + cur;
}, 0);
console.log(total); //382
由于传入了初始值0,所以开始时prev的值为0,cur的值为数组第一项20,相加之后返回值为20作为下一轮回调的prev值,然后再继续与下一个数组项相加,以此类推,直至完成所有数组项的和并返回。
要是未传入初始值0,则开始时prev的值为数组第一项20,cur的值为数组第二项40,两值相加后继续进入下一轮回调。