Javascript 使用下划线对json对象进行排序和重新构造

Javascript 使用下划线对json对象进行排序和重新构造,javascript,json,underscore.js,Javascript,Json,Underscore.js,我正在努力排序JavaScript对象。这是我必须排序的部分数据 我想按ParentMemberCode对每个对象进行分组,然后按order对它们进行排序 { "MemberCode": "B1G", "ParentMemberCode": "B1_GA", "MemberName": "Gross value added at basic prices, total activity", "Order": 1 }, { "MemberCode": "P1

我正在努力排序JavaScript对象。这是我必须排序的部分数据

我想按
ParentMemberCode
对每个对象进行分组,然后按
order
对它们进行排序

{
    "MemberCode": "B1G",
    "ParentMemberCode": "B1_GA",
    "MemberName": "Gross value added at basic prices, total activity",
    "Order": 1
},
{
    "MemberCode": "P119",
    "ParentMemberCode": "B1_GA",
    "MemberName": "Financial Intermediation Services Indirectly Measured (FISIM)",
    "Order": 2
},
{
    "MemberCode": "B1G_P119",
    "ParentMemberCode": "B1_GA",
    "MemberName": "Gross value added at basic prices, excluding FISIM",
    "Order": 3
},
{
    "MemberCode": "D21_D31",
    "ParentMemberCode": "B1_GA",
    "MemberName": "Taxes less subsidies on products",
    "Order": 4
},
{
    "MemberCode": "B1_GE",
    "ParentMemberCode": "GDP",
    "MemberName": "Gross domestic product - expenditure approach",
    "Order": 1
},
{
    "MemberCode": "GDP",
    "ParentMemberCode": "GDP",
    "MemberName": "Gross domestic product",
    "Order": 1
},
{
    "MemberCode": "B1_GI",
    "ParentMemberCode": "GDP",
    "MemberName": "Gross domestic product - income approach",
    "Order": 2
},
{
    "MemberCode": "B1_GA",
    "ParentMemberCode": "GDP",
    "MemberName": "Gross domestic product at market prices - output approach",
    "Order": 3
}
我想对数据进行如下重组和排序:

{
    "MemberCode": "GDP",
    "ParentMemberCode": "GDP",
    "MemberName": "Gross domestic product",
    "Order": 1
}

{
    "MemberCode": "B1_GE",
    "ParentMemberCode": "GDP",
    "MemberName": "Gross domestic product - expenditure approach",
    "Order": 1
},
,
{
    "MemberCode": "B1_GI",
    "ParentMemberCode": "GDP",
    "MemberName": "Gross domestic product - income approach",
    "Order": 2
},
{
    "MemberCode": "B1_GA",
    "ParentMemberCode": "GDP",
    "MemberName": "Gross domestic product at market prices - output approach",
    "Order": 3,
    [
        {
            "MemberCode": "B1G",
            "ParentMemberCode": "B1_GA",
            "MemberName": "Gross value added at basic prices, total activity",
            "Order": 1
        },
        {
            "MemberCode": "P119",
            "ParentMemberCode": "B1_GA",
            "MemberName": "Financial Intermediation Services Indirectly Measured (FISIM)",
            "Order": 2
        },
        {
            "MemberCode": "B1G_P119",
            "ParentMemberCode": "B1_GA",
            "MemberName": "Gross value added at basic prices, excluding FISIM",
            "Order": 3
        },
        {
            "MemberCode": "D21_D31",
            "ParentMemberCode": "B1_GA",
            "MemberName": "Taxes less subsidies on products",
            "Order": 4
        },
    ]
}
这对我来说真的很复杂,所以我需要你的帮助。 你对此有什么想法吗


请不要限制您的想法w/underline.js。

我最近也做了类似的事情,我使用了underline.nest(),这是一个整洁的小js插件,您可以在其中指定一个字段来折叠数据,然后您可以使用underline.sort对生成的树结构进行排序?

我想说我不明白这里有什么大问题。但后来我意识到你想要的是无效的

没有键,对象中不能有项

{
    "MemberCode": "B1_GA",
    "ParentMemberCode": "GDP",
    "MemberName": "Gross domestic product at market prices - output approach",
    "Order": 3,
    [
        {
            "MemberCode": "B1G",
            "ParentMemberCode": "B1_GA",
            "MemberName": "Gross value added at basic prices, total activity",
            "Order": 1
        },
....
不创建有效的对象。您需要保存数组的属性的名称

{
    "MemberCode": "B1_GA",
    "ParentMemberCode": "GDP",
    "MemberName": "Gross domestic product at market prices - output approach",
    "Order": 3,
    "Children": [
        {
            "MemberCode": "B1G",
            "ParentMemberCode": "B1_GA",
            "MemberName": "Gross value added at basic prices, total activity",
            "Order": 1
        },
....

就创建此项而言,您只需要能够在最顶层的数组中遍历您的对象,通过它的
MemberCode
查找每个
ParentMemberCode
(您可能希望在迭代之前直接通过
MemberCode
创建另一个引用每个对象的字典,以便每次查找都使用平均日志(项目数)),并将子项添加到父项的
子项
数组中(添加数组时由您决定),然后,可能在搜索时或之后,过滤掉所有已分配给父对象(不是它们自己)的对象。

@JustAnil感谢您明确我的想法。它看起来像我要找的。我会试试这个。感谢您评论我的错误。我应该像您一样命名数组的名称。