美文网首页
JavaScript中Array的map,filter,redu

JavaScript中Array的map,filter,redu

作者: agamgn | 来源:发表于2020-02-05 07:46 被阅读0次

前言

 map(),filter(),reduce()是Array中常用的方法,现在总结其相关用法。

map()

map() 方法创建一个新数组,其结果是该数组中的每个元素都调用一个提供的函数后返回的结果。

var arr1=[1,4,9,16,25];
const map1=arr1.map(x=>x*2);
console.log(map1);
//[ 2, 8, 18, 32, 50 ]

这里存在一个常见问题,先看执行结果:

var arr1=[1,4,9,16,25];
const map2=arr1.map(x=>{
    if(x===4){
        return x*2;
    }
})
console.log(map2);
//[ undefined, 8, undefined, undefined, undefined ]

为什么会出现四个undefined呢?而不是我预期的[1,8,9,16,25]?这就需要看看map的作用了,在回忆下map() 方法创建一个新数组,其结果是该数组中的每个元素都调用一个提供的函数后返回的结果。map()方法创建了一个新数组,但新数组并不是在遍历完arr1后才被赋值的,而是每遍历一次就得到一个值。所以,下面这样修改后就正确了:

const map3=arr1.map(x=>{
    if(x===4){
        return x*2;
    }
    return x;
})
console.log(map3);

filter()

filter()方法会创建一个新数组,原数组的每个元素传入回调函数中,回调函数中有return返回值,若返回值为true,这个元素保存到新数组中;若返回值为false,则该元素不保存到新数组中;原数组不发生改变。也就是说:满足条件的才会被返回

var arr1=[1,2,3,6,8,9,11];
const filter1=arr1.filter(x=>x%2!==0);
console.log(filter1);
//[ 1, 3, 9, 11 ]

reduce()

reduce() 方法接收一个函数作为累加器,reduce 为数组中的每一个元素依次执行回调函数。

var arr1=[2,3,4,5,6];
const reduce1=arr1.reduce((pre,item)=>{
    return pre+item;
},10);
console.log(reduce1);
//30

总结

这些方法是Array中的高阶函数,合理的使用能够大大提高工作效率。
本节代码

相关文章

网友评论

      本文标题:JavaScript中Array的map,filter,redu

      本文链接:https://www.haomeiwen.com/subject/qnptxhtx.html