1. [代码][JavaScript]代码     
<script type="text/javascript">
// 函数式编程:
// 描述我们要做什么,而不是我们如何去做。这意味着我们工作在一个更高的抽象层次。函数式编程将导致更精巧、清晰和令人愉快的代码。

// 最基础的forEach
function forEach(array, action) {
for (var i = 0; i < array.length; i++) {
action(array[i]);
}
}

// 测试forEach
forEach(["Pear", "Apple"], function(name) {
console.log(name);
});

// ------------------------------------------------ //
// 实现reduce
function reduce(combine, base, array) {
forEach(array, function(element) {
base = combine(base, element);
});
return base;
}

// 使用reduce实例1:计算数组中的0的个数
function countZeros(array) {
function counter(total, elem) {
return total + (elem == 0 ? 1 : 0);
}

return reduce(counter, 0, array);
}

alert("countZeros by reduce: " + countZeros([1, 3, 0, 4, 7, 0]));

// 使用reduce实例2:求和
function sum(array) {
function add(a, b) {
return a + b;
}

return reduce(add, 0, array);
}

alert("sum by reduce: " + sum([1, 2, 3, 5]));

// ------------------------------------------------ //

// 实现map
function map(func, array) {
var result = [];
forEach(array, function(elem) {
result.push(func(elem));
// 对于map,func函数一般只有一个参数,所以用func(elem)
});

return result;
}

// 利用map实现数组的每个数字翻倍
var array = [1, 2, 3, 4, 5];
var mappedArray = map(function(elem) {
return elem * 2;
}, array);
console.log(mappedArray);
http://www.huiyi8.com/css3/​
css3教程
// 利用map实现数组向下取整
var array2 = [1.3, 4.5, 6.7, 8, 9.2];
var mappedArray2 = map(Math.floor, array2);
console.log(mappedArray2);

// ------------------------------------------------ //

// 实现filter:我自己根据上面两个补充实现的
function filter(func, array) {
var result = [];
forEach(array, function(elem) {
if(func(elem))
result.push(elem);
});

return result;
}

// 使用filter过滤出偶数
function isEven(elem) {
return elem % 2 == 0;
}
var array3 = [1, 2, 3, 4, 5, 6, 7, 8, 9];
var filterArray = filter(isEven, array3);
console.log(filterArray);

</script>

JavaScript实现Map、Reduce和Filter的更多相关文章

  1. javaScript 的 map() reduce() foreach() filter()

    map(映射), reduce(规约), forEach(遍历), filter(过滤),它们都是高阶函数,都是以传入不同的函数来以不同的方式操作数组元.ie都不支持 一.map方法 *概述 map( ...

  2. Python的函数式编程: map, reduce, sorted, filter, lambda

    Python的函数式编程 摘录: Python对函数式编程提供部分支持.由于Python允许使用变量,因此,Python不是纯函数式编程语言. 函数是Python内建支持的一种封装,我们通过把大段代码 ...

  3. python笔记十四(高阶函数——map/reduce、filter、sorted)

    一.map/reduce 1.map() map(f,iterable),将一个iterable对象一次作用于函数f,并返回一个迭代器. >>> def f(x): #定义一个函数 ...

  4. map,reduce和filter函数

    numArray = [1, 2, 3, 4, 5] def ercifang(x): return x ** 2 def map_test(func, numArray): li = [] for ...

  5. JavaScript高阶函数map/reduce、filter和sort

    map() 举例说明,比如我们有一个函数f(x)=x²,要把这个函数作用在一个数组[1,2,3,4,5,6,7,8,9]上. 由于map()方法定义在JavaScript的Array中,我们调用Arr ...

  6. 用scheme重写Python的三大函数map reduce 和filter

    重写过程中,发现这种做法能加深对递归的理解,而且reduce还体现了函数式编程是如何通过参数传递来实现命令式编程中的状态改变的. (define (imap f x . y) (if (null? y ...

  7. JavaScript中map函数和filter的简单举例

    JavaScript的数组迭代器函数map和filter,可以遍历数组时产生新的数组,和python的map函数很类似 1> filter是满足条件的留下,是对原数组的过滤:2> map则 ...

  8. Python 中的 map, reduce, zip, filter, lambda基本使用方法

    map(function, sequence[, sequence, ...] 该函数是对sequence中的每个成员调用一次function函数,如果参数有多个,则对每个sequence中对应的元素 ...

  9. map, reduce和filter(函数式编程)

    # map可以用于对可遍历结构的每个元素执行同样的操作,批量操作: map(lambda x: x**2, [1, 2, 3, 4]) # [1, 4, 9, 16] map(lambda x, y: ...

  10. JavaScript中map函数和filter的简单举例(转)

    js的数组迭代器函数map和filter,可以遍历数组时产生新的数组,和python的map函数很类似1)filter是满足条件的留下,是对原数组的过滤:2)map则是对原数组的加工,映射成一一映射的 ...

随机推荐

  1. 洛谷 [P1436] 反素数

    算术基本定理的应用 算术基本定理: 一个正整数 \(N\) 能唯一分解成如下形式 \[N=p_1 ^ {c_1}p_2^{c_2}\cdots P_m ^ {c_m}\] 其中 \(c_i\) 都是正 ...

  2. 用GDB远程调试android native程序

    上次写了几个native程序,想着如何调试,经过一阵子搜索和测试,终于完成了.有几个关键点: 1 gdb和gdbserver 因为这两个需要配套,建议使用同一个ndk下面的gdb和gdbserver ...

  3. eclipse 安卓虚拟机安装apk 及常见问题

    首先必须启动虚拟机然后如图操作:

  4. MVC RPC SOA 和微服务架构的区别

    MVC RPC SOA 微服务架构的区别 单体架构 MVC(Model View Controller) M是指业务模型,V是指用户界面,C则是控制器,使用MVC的目的是将M和V的实现代码分离,从而使 ...

  5. Spring基于Setter函数的依赖注入(DI)

    以下内容引用自http://wiki.jikexueyuan.com/project/spring/dependency-injection/spring-setter-based-dependenc ...

  6. 一道题目- Find the smallest range that includes at least one number from each of the k lists

    You have k lists of sorted integers. Find the smallest range that includes at least one number from ...

  7. iOS10你掉坑了吗?

    坑1: 系统导航栏上按键消失问题 坑2: canOpenURL 调用返回NO问题 坑3: iOS10 权限崩溃问题 坑4: xib不好用了?别怕看这里! 坑5: command +/注释失效 坑6: ...

  8. android studio 使用(一)

    官方网址入门:https://developer.android.com/studio/install.html 看下Build Your first App,

  9. 为什么一个目录里放超过十个Mp4文件会导致资源管理器和播放程序变卡变慢?

    最近<鬼吹灯之精绝古城>大火,我也下载了剧集放在移动硬盘里. 起初还没事,当剧集超过十个时发现资源管理器变慢了,表现为上方的绿条总是在闪动前进,给文件改名都缓慢无比. 当剧集超过十五个时, ...

  10. CSS3 animation(动画) 属性

    一.animation 1.CSS3 animation(动画) 属性 语法: animation: name duration timing-function delay iteration-cou ...