有一个很好的Array方法reduce()可以从Array中获取一个值。例:
[0,1,2,3,4].reduce(function(previousValue, currentValue, index, array){ return previousValue + currentValue; }); 用对象达到相同目的的最佳方法是什么?我想这样做:
{ a: {value:1}, b: {value:2}, c: {value:3} }.reduce(function(previous, current, index, array){ return previous.value + current.value; }); 但是,对象似乎没有reduce()实现任何方法。
在这种情况下,您真正想要的是Object.values。考虑到这一点,这是一个简洁的ES6实现:
const add = { a: {value:1}, b: {value:2}, c: {value:3} }
const total = Object.values(add).reduce((t, {value}) => t + value, 0)
console.log(total) // 6 或者简单地:
const add = { a: 1, b: 2, c: 3 }
const total = Object.values(add).reduce((t, n) => t + n)
console.log(total) // 6
问题来源于stack overflow
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。