如何重构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

我在这里做错了什么?你能指导我怎么做吗?提前谢谢。

将输出表示为数组有点尴尬,最好将其设置为键为Fuel_Commodity_Code的对象。这将节省使用find方法,而不是按键查找所需的记录。但是这个代码符合你想要的格式,我认为:

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"
}
]
result = consumption.reduce((accum, obj) => {
if (!(accum.find(record => record.Fuel === obj.Fuel_Commodity_Code))) {
accum.push({
Fuel: obj.Fuel_Commodity_Code
})
}

const record = (accum.find(record => record.Fuel === obj.Fuel_Commodity_Code))

record[obj.Movement_Type_Enum] = obj.Daily_Consumption_Value
return accum
}, [])

console.log(result)


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);
}

最新更新