0

次の JSON があります。

[{"state":"MN","value":10},{"state":"MN","value":10},{"state":"MN","value":10},{"state":"NY","value":8},{"state":"NY","value":8},{"state":"NY","value":8}]

上記の JSON を次のように変換できる JQuery/JS またはその他の HTML 互換言語のコマンドはありますか。

[{"state":"MN","value":[10,10,10]},{"state":"NY","value":[8,8,8]}]

ありがとう!

4

2 に答える 2

3

あなたが使用することができます:

var input=[{"state":"MN","value":10},{"state":"MN","value":10},{"state":"MN","value":10},{"state":"NY","value":8},{"state":"NY","value":8},{"state":"NY","value":8}]

var tmp={}, output=[];
while(o=input.pop()) (tmp[o.state] || (tmp[o.state]=[])).push(o.value); //you could even stop here if it is enough for you
for(k in tmp) output.push({state:k,value:tmp[k]});
于 2012-04-19T21:38:50.750 に答える
3

以下のループにより、目的の出力が得られます。

デモ

var data = [{"state":"MN","value":10},{"state":"MN","value":10},{"state":"MN","value":10},{"state":"NY","value":8},{"state":"NY","value":8},{"state":"NY","value":8}];

var tmp = {};
var t;
$.each (data, function (i, val) {
   if (tmp.hasOwnProperty(val.state)) {
      t = tmp[val.state];
      t.push(val.value);
   } else {
      tmp[val.state] = [val.value];
   }   
});

var output = [];
for (i in tmp) {
    output.push({'state': i, 'value': tmp[i]});   
}

証拠:

ここに画像の説明を入力

于 2012-04-19T21:37:17.893 に答える