首页 > 代码库 > JavaScript高阶函数 map reduce filter sort
JavaScript高阶函数 map reduce filter sort
本文是笔者在看廖雪峰老师JavaScript教程时的个人总结
高阶函数
一个函数就接收另一个函数作为参数,这种函数就称之为高阶函数
1.高阶函数之map:
此时我们有一个数组和一个接受一个参数并返回一个数的函数。我们需要把这个数组的每一个值在这个函数上走一遍,从而得到一个新数组。此时就需要map了
var a = [1,2,3,4,5,6];
var b = []
var fun = function(x)
{
return x * x;
}
b = a.map(fun)
alert(b) //1 4 9 16 25 36
2.高阶函数之reduce:
此时我们有一个数组和一个接受两个参数并返回一个数的函数。我们需要把这个数组的每两个值在这个函数上走一遍变成一个值,然后再让这个值继续和下一个值走这个函数,最后从而得到一个值。此时就需要map了。
ilter()
把传入的函数依次作用于每个元素,然后根据返回值是true
还是false
决定保留还是丢弃该元素。可见用filter()
这个高阶函数,关键在于正确实现一个“筛选”函数 var a = [1,2,3,4,5]
var b =[]
var fun = function(x,y)
{
return x+y;
}
b = a.reduce(fun)
alert(b) // 15
3.高阶函数之filter:
此时我们有一个数组,这个数组里面有我们想要的也有我们不想要的,怎么办,我们可以下一个函数,让这些值在这个函数里面走一遍,想要的留下,不想要的去掉,返回一个只有理想数值的数组。此时需要filter
var a = [1,2,3,4,5]
var b =[]
var fun = function(x)
{
return x%2 !== 0;
}
b = a.filter(fun)
alert(b)
4.高阶函数之sort:
这个就是之前数组里面提到的排序函数,这个也是一个高级函数,默认是从低到高。 通常规定,对于两个元素
x
和y
,如果认为x < y
,则返回-1
,如果认为x == y
,则返回0
,如果认为x > y
,则返回1
,这样,排序算法就不用关心具体的比较过程,而是根据比较结果直接排序。我们可以传入一个函数,让sort从高到低排序 var a = [3,2,5,1,4]
var fun = function(x,y)
{
if(x<y)
return 1
if(x==y)
return 0
if(x>y)
return -1
//如果认为x < y,则返回-1,如果认为x == y,则返回0,如果认为x > y,则返回1
}
a.sort(fun)
alert(a) //5,4,3,2,1
Array
的sort()
方法默认把所有元素先转换为String再排序 2 10排序会认为2比10大...所以可以传入一个函数修改一下
var arr = [10, 20, 1, 2];
arr.sort(function (x, y) {
if (x < y) {
return -1;
}
if (x > y) {
return 1;
}
return 0;
});
sort()
方法会直接对Array
进行修改,它返回的结果仍是当前Array
JavaScript高阶函数 map reduce filter sort
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。