Javascript Array Reduce 用法解读
2015-10-11 09:40
531 查看
Array Reduce 的用法已经在spec里讲的很清楚了,基本用法如下:
回调被执行四次,每次的参数和返回值如下表:
但是有一次用的时候还是出了问题:
这个写法看似正确的,执行也能得到正确的结果:110。 但是如果数组有3个以上的数据,执行这个结果变成了Null.
仔细研究发现这执行的是一下情况:
第一次: return : x.count + y.count = 10+100=110;
第二次: return: 110.count + 140 =null;;
所以对象元素使用reduce正确的做法应该是:
执行完了,取出数据即可:
这样就得到了想要的结果: 250.
[0,1,2,3,4].reduce(function(previousValue, currentValue, index, array){ return previousValue + currentValue; });
回调被执行四次,每次的参数和返回值如下表:
previousValue | currentValue | index | array | return value | |
---|---|---|---|---|---|
first call | 0 | 1 | 1 | [0,1,2,3,4] | 1 |
second call | 1 | 2 | 2 | [0,1,2,3,4] | 3 |
third call | 3 | 3 | 3 | [0,1,2,3,4] | 6 |
fourth call | 6 | 4 | 4 | [0,1,2,3,4] | 10 |
reduce的返回值是回调函数最后一次被调用的返回值(10)。
但是有一次用的时候还是出了问题:
var Array = [{count: 10 , user_id: 'zhangziyi'}, {count: 100, user_id: 'Angelababy'}];
array.reduce(function(x,y){ return x.count + y.count;});
这个写法看似正确的,执行也能得到正确的结果:110。 但是如果数组有3个以上的数据,执行这个结果变成了Null.
var Array = [{count: 10 , user_id: 'zhangziyi'}, {count: 100, user_id: 'Angelababy'}, {count: 140 , user_id: 'Zhaowei'}];
array.reduce(function(x,y){ return x.count + y.count;});
仔细研究发现这执行的是一下情况:
第一次: return : x.count + y.count = 10+100=110;
第二次: return: 110.count + 140 =null;;
所以对象元素使用reduce正确的做法应该是:
var countObj = array.reduce(function(x,y){ var temp = {}; temp.count = x.count + y.count; return temp });
执行完了,取出数据即可:
var total = countObj.count;
这样就得到了想要的结果: 250.
相关文章推荐
- JQuery1——基础($对象,选择器,对象转换)
- Android学习笔记(二九):嵌入浏览器
- Android java 与 javascript互访(相互调用)的方法例子
- JavaScript演示排序算法
- javascript实现10进制转为N进制数
- 2019年开发人员应该学习的8个JavaScript框架
- HTML中的script标签研究
- 对一个分号引发的错误研究
- 异步流程控制:7 行代码学会 co 模块
- ES6 走马观花(ECMAScript2015 新特性)
- JavaScript拆分字符串时产生空字符的原因
- Canvas 在高清屏下绘制图片变模糊的解决方法
- IE8开发人员工具教程(二)
- 在flex中执行一个javascript方法的简单方式
- Flex结合JavaScript读取本地路径的方法
- 使用ruby部署工具mina快速部署nodejs应用教程
- PowerShell中执行Javascript的方法示例
- javascript asp教程第六课-- response方法
- javascript asp教程More About Recordsets