3

ハイチャートプラグインを使用してチャートを開発しています。チャートに動的な入力を与えるため。そのため、JSON 形式を Array に変更する必要があります。javascriptを使用してJSON配列オブジェクト形式を配列に変更する方法は?

[
        {
            "scoreCount": "108",
            "legendDesc": "Excellent ",
            "colorPatchCode": "#009900"
        },
        {
            "scoreCount": "20",
            "legendDesc": "Fail ",
            "colorPatchCode": "#FF0000"
        }
    ]

のような配列形式を変換するには、

[
        [
            "scoreCount": "108",
            "legendDesc": "Excellent ",
            "colorPatchCode": "#009900"
        ],
        [
            "scoreCount": "20",
            "legendDesc": "Fail ",
            "colorPatchCode": "#FF0000"
        ]
    ]

誰でも助けることができますか?

4

5 に答える 5

4
[
            "scoreCount": "108",
            "legendDesc": "Excellent ",
            "colorPatchCode": "#009900"
        ],

有効な構造ではありません。配列には単一の要素を含めることができます。ネイティブ、または別のアイテム(プロパティ)、または配列を含むオブジェクト。

于 2012-10-25T12:54:25.607 に答える
1

これを試してみたらどうですか:

var arr = [
        {
            "scoreCount": "108",
            "legendDesc": "Excellent ",
            "colorPatchCode": "#009900"
        },
        {
            "scoreCount": "62",
            "legendDesc": "Good ",
            "colorPatchCode": "#99CC00"
        },
        {
            "scoreCount": "55",
            "legendDesc": "Acceptable ",
            "colorPatchCode": "#FFFF00"
        },
        {
            "scoreCount": "31",
            "legendDesc": "Poor ",
            "colorPatchCode": "#FF9900"
        },
        {
            "scoreCount": "20",
            "legendDesc": "Fail ",
            "colorPatchCode": "#FF0000"
        }
    ];

for (i = 0;i<arr.length;i++) {
    var a = [];
    for (n in arr[i]) {
        a[n] = arr[i][n];
    }
    arr[i] = a;
}

for (i = 0;i<arr.length;i++) {
    alert(arr[i]['scoreCount']);
}
于 2012-10-25T13:12:08.030 に答える
0

構文は間違っていますが、必要に応じてこの形式の文字列を作成できます。

しかし、ご存じのとおり、JavaScript 変数に読み戻すことはできません。

于 2012-10-25T15:00:22.017 に答える
0

http://jsfiddle.net/sPN7z/

var source = [
    {
        "scoreCount": "108",
        "legendDesc": "Excellent ",
        "colorPatchCode": "#009900"
    },
    {
        "scoreCount": "62",
        "legendDesc": "Good ",
        "colorPatchCode": "#99CC00"
    },
    {
        "scoreCount": "55",
        "legendDesc": "Acceptable ",
        "colorPatchCode": "#FFFF00"
    },
    {
        "scoreCount": "31",
        "legendDesc": "Poor ",
        "colorPatchCode": "#FF9900"
    },
    {
        "scoreCount": "20",
        "legendDesc": "Fail ",
        "colorPatchCode": "#FF0000"
    }
];

var out = [];

for (var i = 0; i < source.length; i++) {
    var tmp = [];
    for (var i2 in source[i]) {
        tmp.push(source[i][i2]);
    }
    out.push(tmp);
}

アウトは次のようになります。

[
    ["108","Excellent ","#009900"],
    ["62","Good ","#99CC00"],
    ["55","Acceptable ","#FFFF00"],
    ["31","Poor ","#FF9900"],
    ["20","Fail ","#FF0000"]
]

他の人がすでに言ったように..キー値をjavascript配列に保存することはできません。それがjsonの目的です。

于 2012-10-25T13:08:42.620 に答える
0

JavaScript のオブジェクト指向機能を使用して、よりクリーンな方法でこれを実現できます。

var jsonArray = [
   {
     "scoreCount": "108",
     "legendDesc": "Excellent ",
     "colorPatchCode": "#009900"
},
{
     "scoreCount": "62",
     "legendDesc": "Good ",
     "colorPatchCode": "#99CC00"
},
{
     "scoreCount": "55",
     "legendDesc": "Acceptable ",
     "colorPatchCode": "#FFFF00"
},
{
     "scoreCount": "31",
     "legendDesc": "Poor ",
     "colorPatchCode": "#FF9900"
},
{
     "scoreCount": "20",
     "legendDesc": "Fail ",
     "colorPatchCode": "#FF0000"
}
];

function MyJsObject(scoreCount, legendDesc, colorPatchCode) {
     this.scoreCount = scoreCount;
     this.legendDesc = legendDesc;
     this.colorPatchCode = colorPatchCode;
}

function createJSArray() {
     var jsArray = new Array();
     for(i = 0; i < jsonArray.length; i++) {
         var m = new MyJsObject(jsonArray[i].scoreCount,                         jsonArray[i].legendDesc, jsonArray[i].colorPatchCode);
         jsArray[i] = m;
     }
     alert(jsArray[4].scoreCount);//access any object like this
}

于 2012-10-26T04:22:42.033 に答える