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开始的第一个元素的位置。