2

我在 JSON 中有两个数组,例如:

proj1                   proj1
  taska                   taska
    charge1                 charge1
    charge2               taskb
  taskb                     charge1
    charge1                 charge2
proj2                   proj2
  taska                    taska
  taskb                      charge1
   charge1                 taskb
                             charge1
                           taskc
                        proj3
                           taska

我希望他们合并成类似的东西:

proj1
  taska
    charge1
    charge2
  taskb
    charge1
    charge2
proj2
   taska
     charge1
   taskb
     charge1
   taskc
proj3
   taska

我尝试使用 jQuery 的extend方法递归合并,但这失败了,因为我需要合并数组,extend而是替换数组。我需要遍历每个列表的每个级别,还是有更优雅的解决方案,比如extend合并对象数组?

编辑这里是我的列表之一的 JSON 示例:

{
    "projects": [
        {
            "projectName": "JobIdTooManyChar",
            "tasks": [
                {
                    "name": "Process Graphics",
                    "charges": [
                        {
                            "date": "2012-06-18",
                            "hours": 1
                        },
                        {
                            "date": "2012-06-28",
                            "hours": "5"
                        }
                    ]
                },
                {
                    "name": "Custom Software",
                    "charges": [
                        {
                            "date": "2012-06-18",
                            "hours": 1
                        },
                        {
                            "date": "2012-06-19",
                            "hours": 24
                        }
                    ]
                },
                {
                    "name": "Consulting",
                    "charges": [
                        {
                            "date": "2012-06-18",
                            "hours": 1
                        },
                        {
                            "date": "2012-06-21",
                            "hours": 1
                        }
                    ]
                }
            ]
        },
        {
            "projectName": "JobIdTooManyChar",
            "tasks": [
                {
                    "name": "CAD Drawings",
                    "charges": [
                        {
                            "date": "2012-06-18",
                            "hours": 5
                        },
                        {
                            "date": "2012-06-19",
                            "hours": 6
                        },
                        {
                            "date": "2012-06-21",
                            "hours": 9
                        }
                    ]
                }
            ]
        }
    ]
}
4

1 回答 1

0

jQuery 和 underscore.js 都将数组视为属性,因此它们将替换为另一个值。

老实说,我相信您只需要编写(扩展他们已经完成的工作)以您需要的方式扩展对象的方法。例如,对于一个数组,键位置 1 是否有特殊含义,或者它仅仅是一个堆栈/队列?

您需要帮助编写这样一个合并实用程序吗?

于 2012-06-28T19:41:21.110 回答