首页 > 代码库 > map和reduce函数的使用
map和reduce函数的使用
map和reduce函数是定义在Array中的两个方法,可用于提高处理数组的性能和简化代码。
关于它们的概念,参考Google这篇大名鼎鼎的论文“MapReduce: Simplified Data Processing on Large Clusters”。
map
map函数是一个高阶函数,它会调用传入的函数来隐式的处理Array中的每一个元素,因此当我们确定好需要对数组中的每个元素进行的操作时,可先定义好处理的方法,
然后在通过map函数将定义好的函数作为参数传进去,这样浏览器就会自己使用传入的函数来处理数组中的每一个元素并返回处理结束后的新数组。
示例代码如下:
function pow(x) { //简单的平方函数 return x * x; } var arr = [1, 2, 3, 4, 5, 6, 7, 8, 9]; arr.map(pow); // 返回新数组[1, 4, 9, 16, 25, 36, 49, 64, 81]
map()
作为高阶函数,事实上它把运算规则抽象了,因此,我们不但可以计算简单的f(x)=x2,还可以计算任意复杂的函数,比如,把Array
的所有数字转为字符串:
var arr = [1, 2, 3, 4, 5, 6, 7, 8, 9]; arr.map(String); // [‘1‘, ‘2‘, ‘3‘, ‘4‘, ‘5‘, ‘6‘, ‘7‘, ‘8‘, ‘9‘]
reduce
Array的reduce()
把一个函数作用在这个Array
的[x1, x2, x3...]
上,这个函数必须接收两个参数,reduce()
把结果继续和序列的下一个元素做累积计算,其效果就是:
[x1, x2, x3, x4].reduce(f) = f(f(f(x1, x2), x3), x4)
比如我们做一个简单的累加器:
var arr = [1,2,3,4,5,6]; var sum = arr.reduce(function add(x,y){ return x+y; });
甚至于我们如果想把一个整数型的数组变成一个整数,也可以这样处理:
var arr = [1, 3, 5, 7, 9]; arr.reduce(function (x, y) { return x * 10 + y; }); // 13579
map和reduce函数的使用
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。