Javascript:通过 lodash 或下划线或 corejavascript 转换对象响应数组

Den*_*ish 2 javascript underscore.js lodash

我正在使用 highChart 创建柱形图。我如何通过与数据库通信来创建以下 arrayofObj。

现在,我需要将以下source对象数组转换为以下输出。

var source = [
{data: 258, name: '2014'}
{data: 18, name: '2016'}
{data: 516, name: '2014'}
{data: 0, name: '2014'}
{data: 354, name: '2014'}
{data: 18, name: '2016'}
]`
Run Code Online (Sandbox Code Playgroud)

将此对象数组转换为

Output

[{
    name: '2014',
    data: [258, 516, 354]
  }, {
    name: '2016',
    data: [18, 0, 18]
}]
Run Code Online (Sandbox Code Playgroud)

基本上,我希望我的数组按名称(年份)分组,数据应该在数组中

这是我应用的解决方案。

var source = [];
_.each(source, function(singlerec) {
      source.push({
        name: singlerec.name,
        data: singlerec.data  // Here It only assign single record
      });
    });
Run Code Online (Sandbox Code Playgroud)

4ca*_*tle 5

在 Lodash 中,我总是使用_.groupBy然后_.map到输出格式。

var source = [{"data":258,"name":"2014"},{"data":18,"name":"2016"},{"data":516,"name":"2014"},{"data":0,"name":"2014"},{"data":354,"name":"2014"},{"data":18,"name":"2016"}];

var output = _(source)
  .groupBy('name')
  .map(function(v, k) { return { name: k, data: _.map(v, 'data') } })
  .value();

console.log(output);
Run Code Online (Sandbox Code Playgroud)
<script src="https://cdn.jsdelivr.net/lodash/4.13.1/lodash.min.js"></script>
Run Code Online (Sandbox Code Playgroud)