Jquery 如何在javascript中使用嵌套数组合并两个对象?

Jquery 如何在javascript中使用嵌套数组合并两个对象?,jquery,arrays,Jquery,Arrays,我有两个JSON数组,类似于: proj1 proj1 taska taska charge1 charge1 charge2 taskb taskb charge1 charge1 charge2 proj2 proj2

我有两个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
我想把它们合并成这样的东西:

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
                        }
                    ]
                }
            ]
        }
    ]
}

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

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


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

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

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


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

并在需要时递归。这是什么类型的数组?你能用JSON发布它的结构吗?@SalmanA更新了一个详细的JSON示例。@jcolebrand不,事实上,他解释了为什么
expand
不起作用,并推测进行递归和合并,这种方法只会使合并数组变得容易。@z我没有看到
merge
,但是它不起作用的原因与
extend
不起作用的原因相同-这不仅仅是一个简单的对象或数组,它是一个具有数组值的对象,而数组值又包含具有数组值的对象。并在需要时递归。这是什么类型的数组?你能用JSON发布它的结构吗?@SalmanA更新了一个详细的JSON示例。@jcolebrand不,事实上,他解释了为什么
expand
不起作用,并推测进行递归和合并,这种方法只会使合并数组变得容易。@z我没有看到
merge
,但是它不起作用的原因与
extend
不起作用的原因相同-这不仅仅是一个简单的对象或数组,它是一个具有数组值的对象,而数组值又包含具有数组值的对象。