3

現在、JavaScriptライブラリClusterfckを使用してデータのグループ化を実行しています。このライブラリは、次の形式で配列を生成します。

[
  {"canonical":[20,120,102],
   "size":1
  },
  {"canonical":[250,255,253],
   "left":{
      "canonical":[250,255,253],
      "size":1
    },
   "right":{
      "canonical":[255,255,240],
      "size":1
    },
   "size":2
  },
  {"canonical":[100,54,300],
   "size":1
  }
]

しかし、データ視覚化のためのjavascriptライブラリは、以下に示すように、D3.jsとJitがJSON構造をどのように使用するかを示しています。

{
    "canonical":"Pai",
    "children":[
        {"canonical":[20,120,102],  "size":1},
        {
            "canonical":[250,255,253],
            "children": [
                {"canonical":[250,255,253], "size":1},
                {"canonical":[255,255,240], "size":1}               
            ],
            "size":2
        },
        {
            "canonical":[100,54,300],
            "size":1
        }
    ]
}

JavaScriptまたはPHPを使用して、これらの構造を変換したいと思います。誰か助けてもらえますか?

4

1 に答える 1

3

これらの構造の間で変換したいだけなら、これは非常に簡単です。作業フィドルを参照してください: http://jsfiddle.net/nrabinowitz/vuk94/

function convert(input, rootName) {
    // top level
    if (Array.isArray(input)) {
        return {
            "canonical": rootName,
            "children": input.map(convert)
        };
    }
    // node
    else {
        ['left', 'right'].forEach(function(side) {
            if (input[side]) {
                input.children = input.children || [];
                input.children.push(convert(input[side]));
                delete input[side];
            }
        });
        return input;
    }
}

これはいくつかの ECMAScript 1.5 機能 ( Array.isArrayforEach、およびmap) を使用しますが、d3 を使用している場合は、とにかくこれをサポートするブラウザーをターゲットにしている可能性があります。

于 2013-03-08T00:36:52.633 に答える