2

JSONには次のような2つの配列があります。

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をマージするようなより洗練されたソリューションがありますか?

これが私のリストの1つの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 に答える