JS数组map,filter和reduce

简述

  这3个函数有点像java里的stream函数式编程的概念,在js中则用箭头函数实现类似lamdba表达式的功能。

  注意map和filter都会生成一个新数组,原数组的值没有发生变化

map映射

  map用于将数组里的值映射成一个新值

let num1 = [1,2,3,4,5];
let num2 = num1.map(function(x){
    return x*5;
});
console.log(num2); //5,10,15,20,25

  我们可以使用箭头函数简化map中回调函数的写法

let num1 = [1,2,3,4,5];
let num2 = num1.map(x=>x*5);
console.log(num2); //5,10,15,20,25

  map也支持两个参数,第一个参数是当前数组的值,第二个参数是数组的下标

const num = [1, 2, 3, 4, 5];
const num2 = num.map((n, i) => `${n}for${i}`);
console.log(num2);

filter过滤

  filter用于过滤数组中的值,回调函数需返回boolean值,返回true时此时的值会放进新数组,反之不会

let num1 = [1,2,3,4,5];
let num2 = num1.filter(function(x){
    return x<=3;
})
console.log(num2);//1,2,3

  同样我们可以使用箭头函数简化看上去很怪,但是第一个=>是箭头的含义

let num1 = [1,2,3,4,5];
let num2 = num1.filter(x=>x<=3);
console.log(num2);//1,2,3

reduce汇总

  reduce用于将数组里的数据汇总,回调函数有两个参数,pre和cur,pre代表累计量,cur代表当前的元素

  reudce会进行一个类似循环的过程,reduce的第二个参数是pre的初始值,函数的返回值会传入pre成为新的参数,直到数组遍历完毕

let num1 = [1,2,3,4,5];
let num2 = num1.reduce(function(pre,cur){
    return pre + cur;
},0);
console.log(num2);//15

 

posted @ 2022-07-28 11:00  艾尔夏尔-Layton  阅读(152)  评论(0编辑  收藏  举报