开发者社区> 问答> 正文

在对象上的JavaScript reduce()

有一个很好的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()实现任何方法。

展开
收起
保持可爱mmm 2020-02-06 23:08:59 453 0
1 条回答
写回答
取消 提交回答
  • 在这种情况下,您真正​​想要的是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

    2020-02-06 23:09:21
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
JavaScript面向对象的程序设计 立即下载
Delivering Javascript to World 立即下载
编程语言如何演化-以JS的private为例 立即下载