JavaScript实现Map、Reduce和Filter

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,布布扣,bubuko.com

时间: 2024-11-11 22:32:32

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

js map, reduce, forEach, filter的一般实现

map(映射), reduce(规约), forEach(遍历), filter(过滤),它们都是高阶函数,都是以传入不同的函数来以不同的方式操作数组元. 1> map function map(array, func) { var res = []; for (var i = 0, len = array.length; i < len; i++) { res.push(func(array[i])); } return res; } var res = map([1, 2, 3], fun

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

# map可以用于对可遍历结构的每个元素执行同样的操作,批量操作: map(lambda x: x**2, [1, 2, 3, 4]) # [1, 4, 9, 16] map(lambda x, y: x + y, [1, 2, 3], [5, 6, 7]) # [6, 8, 10] # 在Python3种输出上述结果 result1=list(map(lambda x: x**2, [1, 2, 3, 4]) ) # [1, 4, 9, 16] print(result1) result2(m

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

js的数组迭代器函数map和filter,可以遍历数组时产生新的数组,和python的map函数很类似1)filter是满足条件的留下,是对原数组的过滤:2)map则是对原数组的加工,映射成一一映射的新数组var xx = [1, 2, 5, 7];function pp(x){return x % 2;}function px(x){return x % 2;}var m = xx.map(pp);console.log("m = " + m);var f = xx.filter(p

python之lambda,filter,map,reduce函数

g = lambda x:x+1 看一下执行的结果: g(1) >>>2 g(2) >>>3 当然,你也可以这样使用: lambda x:x+1(1) >>>2 可以这样认为,lambda作为一个表达式,定义了一个匿名函数,上例的代码x为入口参数,x+1为函数体,用函数来表示为: def g(x): return x+1 非常容易理解,在这里lambda简化了函数定义的书写形式.是代码更为简洁,但是使用函数的定义方式更为直观,易理解. Python中,

Demo of Python &quot;Map Reduce Filter&quot;

Here I share with you a demo for python map, reduce and filter functional programming thatowned by me(Xiaoqiang). I assume there are two DB tables, that `file_logs` and `expanded_attrs` which records more columns to expand table `file_logs`. For demo

函数式编程 map,reduce,filter,lambda

原型:map(function, sequence),作用是将一个列表映射到另一个列表 map()函数接收两个参数,一个是函数,一个是Iterable, map将传入的函数依次作用到序列的每个元素,并把结果作为新的Iterator返回. def f(x): y = x * x return y r = map(f, range(10)) print(r) print(list(r)) print(list(map(str, [1, 2, 3, 4, 5, 6, 7, 8, 9]))) 原型:re

python中filter, map, reduce, lambda

python 中内置的几个函数filter, map, reduce, lambda简单的例子. #!/usr/bin/env python #_*_coding:utf-8_*_ #filter(function, sequence): #对sequence中的item依次执行function(item),将执行结果为True的item组成一个List/String/Tuple(取决于sequence的类型)返回. #可以看作是过滤函数. tasks = [ { 'id': 1, 'title

王亟亟的Python学习之路(八)-函数式编程,map(),reduce(),filter()

转载请注明出处:王亟亟的大牛之路 首先在这里祝愿大家,新年快乐,工作顺利,BUG少少!!! 本来说是在春节假期内继续维持着写文章的进度,但是还是偷懒了几天(打了4天SC2哈哈哈) 今天上的是关于Python的文章,毕竟在亲戚家拜年,懒得插各类手机调试什么的,况且确实好久没有弄Python了,就写了,废话不多,开始正题!! 函数式编程 函数是什么? 把复杂的操作化为简单的函数分解成简单的操作,这种操作就是面向过程,也就是C这类的实现的大体概念. 函数式是什么? 函数没有变量,任意一个函数,只要输入

Python经常使用内置函数介绍【filter,map,reduce,apply,zip】

Python是一门非常简洁,非常优雅的语言,其非常多内置函数结合起来使用,能够使用非常少的代码来实现非常多复杂的功能,假设相同的功能要让C/C++/Java来实现的话,可能会头大,事实上Python是将复杂的数据结构隐藏在内置函数中,用C语言来实现,所以仅仅要写出自己的业务逻辑Python会自己主动得出你想要的结果.这方面的内置函数主要有,filter,map,reduce,apply,结合匿名函数,列表解析一起使用,功能更加强大.使用内置函数最显而易见的优点是: 1. 速度快,使用内置函数,比