0

データの視覚化を行うために、JIT Infovis 積み上げ円グラフまたは単一値円グラフを使用しています。積み上げ円グラフは、具体的には次の構造を持つオブジェクト「obj」を取ります。

これは、jsonObj のハードコードされたバージョンです。

  var obj = {
        // labelID is unique in each case and may be multiple or just one
        'labelID': ['pVal'],
        'values': [{ //labelName is unique in each case and will only be one
            'labelName': 'name1',
            //there may be multiple or just one "values"
            //ex, 'values': [80, 40, 15, 10]
            'values': 80
        }, {
            'labelName': 'name2',
            'values': [20]
        }, {
            'labelName': 'name3',
            'values': [38]
        }, {
            'labelName': 'name4',
            'values': [58]
        }]
    };

ユーザーに返された検索データを「obj」に動的に入力しようとしています。しかし、上記の特定の構造を持つ空の「obj」を作成して、データを動的に入力することはできません。何度か試しましたが、正しく作成しているとは思いません。この「obj」に動的に入力しようとしている 3 つの値がありますが、腕を動かすことができません。chartID[m], chartArrName[m], chartVal[m].

上で定義した構造に対応する正しい空の「obj」が必要です。

 var "obj" = {
        label: ['pVal'],
        values: [{
            label: [],
            values: []
        }]
    };
    for (m = 0; m <= chartArrID.length - 1; m++) {
        obj.values[m].label += chartArrName[m];
        obj.values[m].values += parseFloat(chartArrVal[m]);
        //json.push({label: chartArrName[m], values: parseFloat(chartArrVal[m])});
    }
4

1 に答える 1

1

これは JSON オブジェクトではありません。JSON は軽量のデータ交換形式です。オブジェクト初期化構文を使用してオブジェクトを作成しているだけです。その場で必要なものを追加できます。

var myObj = {};
myObj.name = "foo";
myObj.books = [ "one", "two" ];
myObj.emptyField = null;
myObj.emptyArray = [];
myObj["anotherField"] = "bar";   // this works too

myObj.anotherArray = [];

myObj.anotherArray[0] = {};  // you need to insert something in the first position!
myObj.anotherArray[0].label = "aaa";
myObj.anotherArray[0].value = "bbb";
myObj.anotherArray[0].xyz = "ccc";

myObj.anotherArray[1] = {};  // in the second too, of course!
myObj.anotherArray[1].label = "ddd";
myObj.anotherArray[1].value = "eee";
myObj.anotherArray[1].xyz = "fff";
于 2012-07-23T18:38:21.003 に答える