javascript - 如何使用 Array.reduce()?
问题描述
我有如下 JSON 响应:
[
{"name": "a", "data": [{"value":10,"id":1},{"value":20,"id":2}],
{"name": "b", "data": [{"value":10,"id":1},{"value":20,"id":2}],
{"name": "c", "data": [{"value":10,"id":1},{"value":20,"id":2}],
{"name": "d", "data": [{"value":10,"id":1},{"value":20,"id":2}],
{"name": "e", "data": [{"value":10,"id":1},{"value":20,"id":2}],
]
如何对每个数据元素中的每个“值”求和(按列)并得到如下结果:
[{"name": "something", "data":[{"value":50,"id":1},{"value":100,"id":2}]
如何为此使用 array.reduce() 或者是否有任何其他方法可以实现上述结果?
解决方案
试试下面的逻辑。
var series = [{"name": "a", "data": [{"value":10,"id":1},{"value":20,"id":2}]}, ... , ....]
var resultSeries = series.reduce((acc, cur) => {
var result = {
name: ‘Something’,
data: []
};
var dataArray = acc.data.map((el, i) => {
var curData = cur.data[i] || {};
var sum = (el.value || 0) + (curData.value || 0);
return {
value: sum
}
});
result.data = dataArray ;
return result;
})
现在resultSeries
将举行
[{"name": "something", "data":[{"value":50,"id":1},{"value":100,"id":2}]
推荐阅读
- php - 如何在 url 中将链接作为参数传递
- ios - LongPress on List 确实在 iPad 上重新排序,但如何在 iPhone 上重新排序
- ios - 有没有办法从 iPad 或选定的 iPhone 版本不支持我的应用程序?
- node.js - 将视频+音频(通过 ffmpeg)分段和转码为按需 HLS 流的精确方法?
- android - Proguard minifyEnabled True 应用程序未按预期工作
- sql - 显示距离路线 5 公里处的所有标记
- firebase - 如何为 Firebase 创建 APNS 有效负载?
- ios - Intellij 为 Kotlin 多平台生成的项目总是显示构建失败
- amazon-web-services - 本地应用程序是否可以将消息直接推送(发布)到 AWS Eventbridge /EventBus?
- ms-access - 控件无法编辑;它绑定到自动编号字段