用 JavaScript 重塑扁平的 JSON 结构

ana*_*chy 0 javascript

目前,我有平面 JSON 格式的数据。我们需要将其转换为特定的结构。

[
   {
      "Region":"WEST",
      "District":"PACIFIC",
      "timestamp":"2018-12-28T00:00:00.000Z",
      "Penetration":374
   },
   {
      "Region":"WEST",
      "District":"MOUNTAIN",
      "timestamp":"2018-12-28T00:00:00.000Z",
      "Penetration":427
   },
   {
      "Region":"SOUTH",
      "District":"SOUTH WEST",
      "timestamp":"2018-12-28T00:00:00.000Z",
      "Penetration":422
   },
   {
      "Region":"SOUTH",
      "District":"SOUTH EAST",
      "timestamp":"2018-12-28T00:00:00.000Z",
      "Penetration":410
   }
]
Run Code Online (Sandbox Code Playgroud)

应该是这样。还"version": "v1"需要为每个对象添加一个常量。扁平化的结果集可以是动态的。因此,除了时间戳键之外,任何存在的键值对都应被拉入事件对象中。

[
  {
    "version": "v1",
    "timestamp": "2018-12-28T00:00:00.000Z",
    "event": {
      "Penetration":374,
      "Region": "WEST",
      "District": "PACIFIC"
    }
  },
  {
    "version": "v1",
    "timestamp": "2018-12-28T00:00:00.000Z",
    "event": {
      "Penetration":427,
      "Region": "WEST",
      "District": "MOUNTAIN"
    }
  },
  {
    "version": "v1",
    "timestamp": "2018-12-28T00:00:00.000Z",
    "event": {
      "Penetration":422,
      "Region": "SOUTH",
      "District": "SOUTH WEST"
    }
  }
  {
    "version": "v1",
    "timestamp": "2018-12-28T00:00:00.000Z",
    "event": {
      "Penetration":410
      "Region": "SOUTH",
      "District": "SOUTH EAST"
    }
  }           
]
Run Code Online (Sandbox Code Playgroud)

Raj*_*jan 5

您可以简单地使用map方法:

var data=[ { "Region":"WEST", "District":"PACIFIC", "timestamp":"2018-12-28T00:00:00.000Z", "Penetration":374 }, { "Region":"WEST", "District":"MOUNTAIN", "timestamp":"2018-12-28T00:00:00.000Z", "Penetration":427 }, { "Region":"SOUTH", "District":"SOUTH WEST", "timestamp":"2018-12-28T00:00:00.000Z", "Penetration":422 }, { "Region":"SOUTH", "District":"SOUTH EAST", "timestamp":"2018-12-28T00:00:00.000Z", "Penetration":410 }];

var result = data.map(({timestamp, ...events})=>({version:'v1',timestamp, events}));

console.log(result);
Run Code Online (Sandbox Code Playgroud)