更改Json结构javascript

时间:2020-03-31 10:26:24

标签: javascript json

如何将以下json格式的格式更改为预期的输出:

[
  {
    "type": "System Usability Score",
    "score": 74,
    "date": "2020-03-19T18:30:00.000+0000"
  },
  {
    "type": "System Usability Score",
    "score": 87,
    "date": "2020-03-31T18:30:00.000+0000"
  }
]

预期输出:

[
  {
    "name": "System Usability Score",
    "series": [
      {
        "name": "2020-03-19T18:30:00.000+0000",
        "value": 74
      },
      {
        "name": "2020-03-31T18:30:00.000+0000",
        "value": 87
      }
    ]
  }
]

有人可以帮忙吗?

1 个答案:

答案 0 :(得分:0)

尝试使用Array.prototype.reduce

"use strict";

const input = [
  {
    "type": "System Usability Score",
    "score": 74,
    "date": "2020-03-19T18:30:00.000+0000"
  },
  {
    "type": "Net Promoter Score",
    "score": 89,
    "date": "2020-03-23T18:30:00.000+0000"
  },
  {
    "type": "Net Promoter Score",
    "score": 78,
    "date": "2020-03-25T18:30:00.000+0000"
  },
  {
    "type": "System Usability Score",
    "score": 87,
    "date": "2020-03-31T18:30:00.000+0000"
  }
]


var output = input.reduce((collect, {type, score, date}) => {
  let el, series
  if (el = collect.find(({name}) => name === type)) {
    series = el.series
  } else  {
    series = collect[collect.push({name: type, series: []}) - 1].series
  }
  series.push({name: date, value: score})
  return collect
}, [])

console.log(output)