javascript - 对象组的Javascript数组按多个值求和
问题描述
[
{ Phase: "Phase 1",Value1: "5", Value2: "4" },
{ Phase: "Phase 1",Value1: "3", Value2: "7" },
{ Phase: "Phase 1",Value1: "5", Value2: "2" },
{ Phase: "Phase 1",Value1: "2", Value2: "1" },
{ Phase: "Phase 2",Value1: "1", Value2: "3" },
{ Phase: "Phase 2",Value1: "4", Value2: "8" },
{ Phase: "Phase 2",Value1: "5", Value2: "1" },
{ Phase: "Phase 2",Value1: "1", Value2: "1" }
]
嗨,我有一个对象数组,我期待以下格式。我想通过添加 value1、value2 的所有数据来获得结果(它可以是动态的,也可以是更多的)按阶段分组。
我正在用 javascript 编码,但是结果不正确。
[
{ Phase: "Phase 1",Value1: "15", Value2: "14" },
{ Phase: "Phase 2",Value1: "11", Value2: "13" }
]
我找不到任何 lodash 功能来实现这一点。可以使用或不使用 lodash 来完成吗?
解决方案
你可以试试这段代码
这不是那么通用的代码,但可以帮助您进一步编写代码
x = [
{ Phase: "Phase 1",Value1: "5", Value2: "4" },
{ Phase: "Phase 1",Value1: "3", Value2: "7" },
{ Phase: "Phase 1",Value1: "5", Value2: "2" },
{ Phase: "Phase 1",Value1: "2", Value2: "1" },
{ Phase: "Phase 2",Value1: "1", Value2: "3" },
{ Phase: "Phase 2",Value1: "4", Value2: "8" },
{ Phase: "Phase 2",Value1: "5", Value2: "1" },
{ Phase: "Phase 2",Value1: "1", Value2: "1" }
];
var ph1Val1 = 0; var ph1Val2 = 0; var ph2Val1 = 0; var ph2Val2 = 0;
for(var i = 0; i < x.length; i++){
if(x[i].Phase == "Phase 1"){
var v1 = x[i].Value1;
var v2 = x[i].Value2;
ph1Val1 = ph1Val1 + parseInt(v1);
ph1Val2 = ph1Val2 + parseInt(v2);
}
if(x[i].Phase == "Phase 2"){
var p2v1 = x[i].Value1;
var p2v2 = x[i].Value2;
ph2Val1 = ph2Val1 + parseInt(p2v1);
ph2Val2 = ph2Val2 + parseInt(p2v2);
}
}
var obj1 = { Phase: "Phase 1",Value1: ph1Val1, Value2: ph1Val2 };
var obj2 = { Phase: "Phase 2",Value1: ph2Val1, Value2: ph2Val2 };
var y = [];
y.push(obj1);
y.push(obj2);
console.log(y);
推荐阅读
- docker - 使用 Corda Docker 映像的序列化错误
- javascript - 在 JS 上暴露子模块是不好的做法(import * from ...)?
- postgresql - 使用 JDBC 从 PostgreSQL 获取存储过程的主体
- javascript - 汉堡菜单滑动
- excel - 即使使用 IsError,Excel VBA Vlookup 也会返回错误 2042
- vue.js - Adam Lynch 的带有 CSS 网格的灵活数据表的问题
- sql-server - 当日期文本框为空时,使用多个输入和两个日期之间的搜索不起作用
- oracle - 如何在 TEXT_IO 过程中自动调整 CSV 文件的宽度列
- c++ - MP4文件的帧/像素数据偏移?
- docker - 将 docker run 转换为 docker compose