0

JSON 配列からキー/値を抽出して、それらを JavaScript 配列の別の部分にフックする方法がわかりません。

たとえば、次のような 2 つの json 配列があります。

シリーズ 1:

{"label1":"91970","label2":"1231", ...  "labeln": "somenumbers".}

シリーズ 2:

{"label1":"4556","label2":"3434", ....}

次のように、両方を1つのjavascriptオブジェクト(nvd3プロット用)に変換したいと思います:

long_short_data = [ 
  {
    key: 'Series1',
    color: '#d62728',
    values: [
      { 
        "cell" : "label1" ,
        "value" : 91970
      } , 
      { 
        "cell" : "label2" ,
        "value" : 1231
      } ,
.....
    ]
  },
  {
    key: 'Series2',
    color: '#1f77b4',
    values: [
      { 
        "cell" : "label1" ,
        "value" : 4556
      } , 
      { 
        "cell" : "label2" ,
        "value" : 3434
      } , 
 ...
      }
    ]
  }
];

あなたの助けに感謝。

4

2 に答える 2

0

たとえば、d3.keysの使用を検討できます。

var series1 = {"label1":"91970","label2":"1231","labeln": "453453"};
var series2 = {"label1":"4556","label2":"3434"};
var long_short_data = [ 
  {
    key: 'Series1',
    color: '#d62728',
    values: []
  },
  {
    key: 'Series2',
    color: '#1f77b4',
    values: []
  }
];
d3.keys(series1).forEach(function(d) { 
    long_short_data[0].values.push(
      { 
        "cell" : d ,
        "value" : +series1[d]
      }
    );
});
d3.keys(series2).forEach(function(d) { 
    long_short_data[1].values.push(
      { 
        "cell" : d ,
        "value" : +series2[d]
      }
    );
});

long_short_dataあなたの質問で定義されているように、作成されます

于 2013-08-22T00:32:44.430 に答える
0

JSON 文字列が与えられたら、最初に呼び出しJSON.parse()て Javascript オブジェクトに変換する必要があります。

Object.keys(obj)次に、直接属するプロパティの配列を返す関数を使用して、配列objを作成できます。

var array = [];
for (var ii = 0, keys = Object.keys(series); ii < keys.length; ii++) {
    array.push({ cell : keys[ii], value : series[keys[ii]] });
}
于 2013-08-22T00:00:33.360 に答える