javascript - 如何重构 JSON 对象?
问题描述
我有以下要重组的 json 对象-
"Consumption": [
{
"Daily_Consumption_Value": 65,
"Deal_Master_Voyage_Calc_Fuel_Consumption_Id": 1484,
"Deal_Master_Voyage_Calc_Id": 10199,
"Fuel_Commodity_Id": 5,
"Last_Modify_Date": "Nov 6, 2020",
"Movement_Type_Enum": "Laden",
"Fuel_Commodity_Code": "Fuel Oil"
},
{
"Daily_Consumption_Value": 55,
"Deal_Master_Voyage_Calc_Fuel_Consumption_Id": 1485,
"Deal_Master_Voyage_Calc_Id": 10199,
"Fuel_Commodity_Id": 5,
"Last_Modify_Date": "Nov 6, 2020",
"Movement_Type_Enum": "Ballast",
"Fuel_Commodity_Code": "Fuel Oil"
},
{
"Daily_Consumption_Value": 25,
"Deal_Master_Voyage_Calc_Fuel_Consumption_Id": 1486,
"Deal_Master_Voyage_Calc_Id": 10199,
"Fuel_Commodity_Id": 5,
"Last_Modify_Date": "Nov 6, 2020",
"Movement_Type_Enum": "Idle",
"Fuel_Commodity_Code": "Fuel Oil"
},
{
"Daily_Consumption_Value": 55,
"Deal_Master_Voyage_Calc_Fuel_Consumption_Id": 1487,
"Deal_Master_Voyage_Calc_Id": 10199,
"Fuel_Commodity_Id": 5,
"Last_Modify_Date": "Nov 6, 2020",
"Movement_Type_Enum": "Loading",
"Fuel_Commodity_Code": "Fuel Oil"
},
{
"Daily_Consumption_Value": 55,
"Deal_Master_Voyage_Calc_Fuel_Consumption_Id": 1488,
"Deal_Master_Voyage_Calc_Id": 10199,
"Fuel_Commodity_Id": 5,
"Last_Modify_Date": "Nov 6, 2020",
"Movement_Type_Enum": "Discharging",
"Fuel_Commodity_Code": "Fuel Oil"
},
{
"Daily_Consumption_Value": 0.02,
"Deal_Master_Voyage_Calc_Fuel_Consumption_Id": 1489,
"Deal_Master_Voyage_Calc_Id": 10199,
"Fuel_Commodity_Id": 58,
"Last_Modify_Date": "Nov 6, 2020",
"Movement_Type_Enum": "Laden",
"Fuel_Commodity_Code": "MDO"
},
{
"Daily_Consumption_Value": 0.01,
"Deal_Master_Voyage_Calc_Fuel_Consumption_Id": 1490,
"Deal_Master_Voyage_Calc_Id": 10199,
"Fuel_Commodity_Id": 58,
"Last_Modify_Date": "Nov 6, 2020",
"Movement_Type_Enum": "Ballast",
"Fuel_Commodity_Code": "MDO"
},
{
"Daily_Consumption_Value": 0.02,
"Deal_Master_Voyage_Calc_Fuel_Consumption_Id": 1491,
"Deal_Master_Voyage_Calc_Id": 10199,
"Fuel_Commodity_Id": 58,
"Last_Modify_Date": "Nov 6, 2020",
"Movement_Type_Enum": "Idle",
"Fuel_Commodity_Code": "MDO"
},
{
"Daily_Consumption_Value": 0.02,
"Deal_Master_Voyage_Calc_Fuel_Consumption_Id": 1492,
"Deal_Master_Voyage_Calc_Id": 10199,
"Fuel_Commodity_Id": 58,
"Last_Modify_Date": "Nov 6, 2020",
"Movement_Type_Enum": "Loading",
"Fuel_Commodity_Code": "MDO"
},
{
"Daily_Consumption_Value": 0.02,
"Deal_Master_Voyage_Calc_Fuel_Consumption_Id": 1493,
"Deal_Master_Voyage_Calc_Id": 10199,
"Fuel_Commodity_Id": 58,
"Last_Modify_Date": "Nov 6, 2020",
"Movement_Type_Enum": "Discharging",
"Fuel_Commodity_Code": "MDO"
}
]
我想像这样重组 Json 对象-
consumption = [
{
Fuel: "Fuel Oil",
Laden: 65,
Ballast: 55,
Idle: 25,
Loading: 55,
Discharging: 55,
},
{
Fuel: "MDO",
Laden: 0.02,
Ballast: 0.01,
Idle: 0.02,
Loading: 0.02,
Discharging: 0.02,
},
]
我尝试了以下代码 -
var tmp = {};
res.forEach(function (item) {
var tempKey = item.Fuel_Commodity_Code;
if (!tmp.hasOwnProperty(tempKey)) {
tmp[tempKey] = {
Fuel: item.Fuel_Commodity_Code,
Laden: "",
Ballast: "",
Idle: "",
Loading: "",
Discharging: "",
};
}
tmp[tempKey].Laden = item.Daily_Consumption_Value;
tmp[tempKey].Ballast = item.Daily_Consumption_Value;
tmp[tempKey].Idle = item.Daily_Consumption_Value;
tmp[tempKey].Loading = item.Daily_Consumption_Value;
tmp[tempKey].Discharging = item.Daily_Consumption_Value;
});
var results = Object.keys(tmp).map(function (key) {
return tmp[key];
});
console.log(results);
}
但我没有得到想要的输出。我得到这样的东西,除了燃料之外,所有键的值都相同 -
0:
Ballast: 55
Discharging: 55
Fuel: "Fuel Oil"
Idle: 55
Laden: 55
Loading: 55
1:
Ballast: 0.02
Discharging: 0.02
Fuel: "MDO"
Idle: 0.02
Laden: 0.02
Loading: 0.02
我在这里做错了什么?你能指导我怎么做吗?提前致谢。
解决方案
var tmp = {};
res.forEach(function (item) {
var tempKey = item.Fuel_Commodity_Code;
if (!tmp.hasOwnProperty(tempKey)) {
tmp[tempKey] = {
Fuel: "",
Laden: "",
Ballast: "",
Idle: "",
Loading: "",
Discharging: "",
};
}
tmp[tempKey].Fuel = item.Fuel_Commodity_Code;
tmp[tempKey].Laden = item.Daily_Consumption_Value;
tmp[tempKey].Ballast = item.Daily_Consumption_Value;
tmp[tempKey].Idle = item.Daily_Consumption_Value;
tmp[tempKey].Loading = item.Daily_Consumption_Value;
tmp[tempKey].Discharging = item.Daily_Consumption_Value;
});
var results = Object.keys(tmp).map(function (key) {
return tmp[key];
});
console.log(results);
}
推荐阅读
- kotlin - 期望在 Getter 中声明成员
- python - 将 docker 用于 Celery Task +Rabbitmq 不适用于 python 3.7
- c# - linq中按时间顺序排序的日期时间
- here-api - 离线使用 SDK 时出错:calculateRoute 返回 GRAPH_DISCONNECTED
- hyperledger-fabric - 无法在 Mac OS 上启动 Fabric,startFabric.sh 给出守护程序错误
- mysql - 是否可以获得我们正在删除的特定列值
- angular - Angular 应用程序中 Font Awesome 字体的 CORS 错误
- node.js - 试图填充每个聊天室的每个所有者
- mysql - 将 XAMPP SQL 数据库添加到 PhpStorm 会出现被拒绝的详细信息错误
- sql - 在 postgreSQL 中一天超过 24 小时