javascript - 以特定格式对 json 数据进行分组

标签 javascript lodash

我的基础数据如下..

 [{
        month: 'Jan',
        cat: 'A',
        val: 20
    },{
        month: 'Jan',
        cat: 'B','
        val: 5
    },{
        month: 'Jan',
        cat: 'C',
        val: 10
    },{
        month: 'Feb',
        cat: 'A',
        val: 30
    },{
        month: 'Feb',
        cat: 'B',
        val: 10
    },{
        month: 'Feb',
        cat: 'C',
        val: 20
    }];

我需要使用javascript将其转换为以下内容,最好是lodash..

 [{
        selectedmonth: 'Jan',
        data:[{
        mycat: 'A',
        myval: 20
    },{
        mycat: 'B',
        myval: 5
    },{
        mycat: 'C',
        myval: 10
    }
       ]
    }, {
        selectedmonth: 'Feb',
        data:[{
        mycat: 'A',
        myval: 30
    },{
        mycat: 'B',
        myval: 10
    },{
        mycat: 'C',
        myval: 20
    }
       ]
    }]

我知道 lodash groupby - 月调用会执行 groupby 但它以不同的格式执行。

真诚感谢任何帮助..

最佳答案

您可以使用对象作为哈希表来引用结果数组。

var array = [{ month: 'Jan', cat: 'A', val: 20 }, { month: 'Jan', cat: 'B', val: 5 }, { month: 'Jan', cat: 'C', val: 10 }, { month: 'Feb', cat: 'A', val: 30 }, { month: 'Feb', cat: 'B', val: 10 }, { month: 'Feb', cat: 'C', val: 20 }],
    grouped = [];

array.forEach(function (a) {
    if (!this[a.month]) {
        this[a.month] = { selectedmonth: a.month, data: [] };
        grouped.push(this[a.month]);
    }
    this[a.month].data.push({ mycat: a.cat, myval: a.val });

}, Object.create(null));

console.log(grouped);

关于javascript - 以特定格式对 json 数据进行分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37486823/

相关文章:

javascript - 如何创建链接供用户订阅我的 Google 日历

javascript - Jquery 如果窗口宽度 < something and p string > something

javascript - Object.isEmpty 与 .isEmpty() 与 _.isEmpty(Object) javascript、lodash、下划线

javascript - Lodash 将字符串与对象匹配

node.js - 由于 lodash@3.3.1 依赖问题,Keystonejs 安装失败

javascript - 使用 for..of 迭代时删除 Set 中的元素是否安全?

javascript - 如何从 Angular 的模式中获取文本输入值?

javascript - Selenium EventFiringWebDriver JavaScript : SyntaxError: missing ) after argument list

javascript - 从 map 返回的 React 渲染数组

javascript - 遍历数组以找到具有匹配 ID 的所有对象,并将这些对象合并到数组中的一个元素中。