首页 > 解决方案 > 如何重构 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

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

标签: javascriptjson

解决方案


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

推荐阅读