JavaScript高阶函数map和filter讲解

2017-05-10  本文已影响0人  lijaha

Array.map()

定义: 对数组的每个元素调用定义的回调函数并返回包含结果的数组

调用方式:
1.Array.map(callback(element,index,array){})

2.Array.map(callback)
function callback(element,index,array){}

参数:
element:数组当前被调用的元素
index:数组当前被调用元素的索引
array:当前被调用元素的数组(数组本身)

实例:

    //实例一:求圆面积
    //定义3个圆的半径
    var circle = [7,8,9];
    circle.map((element) => { return Math.PI * element * element });
    //circle = [Math.PI * 7 * 7,Math.PI * 8 * 8,Math.PI * 9 * 9]

    //实例二:求数组内元素%10后的结果
    var array = [11,22,33,44,55];
    array.map((element) => { return element % 10 });
    //array = [1,2,3,4,5]

   //实例三:求平方根
   var array = [16,25,36];
   array.map(Math.sqrt);
   //array = [4,5,6]

Array.filter()

定义:filter把传入的函数依次作用于每个元素,然后根据返回值是True or False决定保留还是舍弃该元素,并返回新的数组。

调用方式:
1.Array.filter(callback(element,index,array){})

2.Array.filter(callback)
function callback(element,index,array){}

参数:
element:数组当前被调用的元素
index:数组当前被调用元素的索引
array:当前被调用元素的数组(数组本身)

实例:

    //实例一:获取一个数组的偶数
    var array = [2,5,6,9,4,7];
    array.filter( (element) => { return element % 2 == 0});
    //array = [2,6,4]
    //实例二:去除Array的重复元素
    var array = ["li","wang","xie","zhang","wang","li"];
    array.filter( (element,index,array) => { return array.indexOf(element) === index});
    //array = ["li","wang","xie","zhang"]

indexOf()返回数组下标0开始的第一个元素的位置。

上一篇下一篇

猜你喜欢

热点阅读