有一个不错的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

Javascript相关问答推荐

除了在Angular 16中使用快照之外,什么是可行且更灵活的替代方案?

禁用从vue.js 2中的循环创建的表的最后td的按钮

为什么从liveWire info js代码传递数组我出现错误?

如何使用侧边滚动按钮具体滚动每4个格?

在观察框架中搜索CSV数据

有没有可能使滑动img动画以更快的速度连续?

MathJax可以导入本地HTML文档使用的JS文件吗?

使用Java脚本根据按下的按钮更改S文本

用于在路径之间移动图像的查询

如何防止ionic 输入中的特殊字符.?

JavaScript:如果字符串不是A或B,则

使用jQuery find()获取元素的属性

无法设置RazorPay订阅API项目价格

ngOnChanges仅在第二次调用时才触发

postman 预请求中的hmac/sha256内标识-从js示例转换

如何通过Axios在GraphQL查询中发送数组

Cherrio JS返回父div的所有图像SRC

Clip-Path在网页浏览器(Mozilla、Edge、Chrome)上不能正常工作,但在预览版Visual Code Studio HTML、CSS、JS上却能很好地工作

Pevent触发material 用户界面数据网格中的自动保存

JAVASCRIPT SWITCH CASE语句:当表达式为';ALL';