美文网首页
浅析reduce的用法

浅析reduce的用法

作者: laiyituan | 来源:发表于2016-08-10 10:41 被阅读1623次

reduce()方法相当于一个累加器的函数,所述阵列的每个值(从左到右)将其累计计算;
*ie9以下的浏览器中,不支持该方法

语法

arr.reduce(callback[, initialValue])

callback函数有四个参数:

prev: 上一次叠加的结果值或者初始值
cur: 当前会参与叠加的项
index: 当前值的索引
arr: 数组本身

说明:
回调函数第一次执行时并且无initialValue时,prev的值为arr的第一项,cur的值为arr的第二项,index索引从1开始;
若有initialValue时,prev的值为initialValue, cur的值为arr的第一项,index索引从0开始;
initialValue设置prev的初始类型和初始值也就是叠加结果的类型。
如果数组为空,并且不提供initialValue,会抛出TypeError
错误;
如果数组为空,有initialValue;或者数组只有一个元素,无initialValue时:直接返回该值,而不再调用callback;

var maxCallback = ( pre, cur ) => Math.max( pre.x, cur.x );
var maxCallback2 = ( max, cur ) => Math.max( max, cur );// reduce() without initialValue

[ { x: 22 }, { x: 42 } ].reduce( maxCallback ); // 42
[ { x: 22 }            ].reduce( maxCallback ); // { x: 22 }
[                      ].reduce( maxCallback ); // TypeError

// map/reduce; better solution, also works for empty arrays
[ { x: 22 }, { x: 42 } ].map( el => el.x ) 
                        .reduce( maxCallback2 , 0 );

写一个最近用上的例子

var result = [ 
 { subject: 'math', score: 88, id:1 },
 { subject: 'chinese', score: 95, id:2 },
 { subject: 'english', score: 80, id:3 }
];
result.reduce((res, cur) => {
  res[cur.id]=cur
  return res
},{})//Object {1: Object, 2: Object, 3: Object}

相关阅读:

参考文档:

相关文章

  • 浅析reduce的用法

    reduce()方法相当于一个累加器的函数,所述阵列的每个值(从左到右)将其累计计算;*ie9以下的浏览器中,不支...

  • 3.常见高阶函数2

    reduce,fold用法

  • 2022-01-12

    reduce()用法arr.reduce(fuction(pre,cur,index,arr){},init)例子...

  • 用高中数学知识理解 Array.reduce

    Array.reduce 算是比较高级的用法了。 本文用一些例子来介绍。 01 reduce 用法 Array.r...

  • reduce用法

    accumulator 累计器currentValue 当前值currentIndex 当前索引array 数组

  • 2018-04-10

    Array.reduce()的便捷用法兼具map和filter的双重用法

  • 2019-01-24记录

    计算函数被执行次数 ---- javascript reduce()函数的用法(): reduce函数可 接受一个...

  • reduce的用法

    最直接的用法 将数组通过叠加变成一项 计算对象每个值的总数 判断字符串中每个数字出现的次数 替代map(filte...

  • 浅析 go context

    浅析 go context 用法demo WithCancelfunc WithCancel(parent Con...

  • ReactiveObjC高级用法

    ReactiveObjC高级用法 combineLatest_reduce结合使用 bind、flattenMap...

网友评论

      本文标题:浅析reduce的用法

      本文链接:https://www.haomeiwen.com/subject/kgtjsttx.html