2014-04-14 70 views
0

我有以下JSON數組排序JSON陣列分成多個陣列

{"label":[{"name":"Government Schools", 
      "datapoints":[{"year":"2007-2008","total":"1300"}, 
         {"year":"2008-2009","total":"1280"}, 
         {"year":"2009-2010","total":"1100"}, 
         {"year":"2010-2011","total":"1400"}] 
     }, 
     {"name":"Total Schools", 
      "datapoints":[{"year":"2007-2008","total":"900"}, 
         {"year":"2008-2009","total":"1000"}, 
         {"year":"2009-2010","total":"1300"}, 
         {"year":"2010-2011","total":"999"}] 
     }] 
} 

我試圖數據點到一個數組具有以下格式

var linedataline = [{dataPoints : [{ x: 1, 
             y: 1300, 
             label: "2007-2008" 
            }, { 
             x: 2, 
             y: 1280, 
             label: "2008-2009" 
            }, { 
             x: 3, 
             y: 1100, 
             label: "2009-2010" 
            }, { 
             x: 4, 
             y: 1400, 
             label: "2010-2011" 
            }] 
           }, 
           {dataPoints : [{ x: 1, 
             y: 900, 
             label: "2007-2008" 
            }, { 
             x: 2, 
             y: 1000, 
             label: "2008-2009" 
            }, { 
             x: 3, 
             y: 1300, 
             label: "2009-2010" 
            }, { 
             x: 4, 
             y: 999, 
             label: "2010-2011" 
            }] 

          }]; 

我已經使用了以下JavaScript

排序
for(var i=0; i<data.label.length;i++){ 
       datapoints.length = 0; 
       for(var j=0;j<data.label[i].datapoints.length;j++){ 
        datapoints.push({ 
           x: j+1, 
           y: data.label[i].datapoints[j].total, 
           label: data.label[i].datapoints[j].year 
        }) 
       } 
       linedataline.push({ 
         dataPoints: datapoints 
       })  
      } 

其中「data」是解析的JSON。問題是,linedataline包含兩個數組,但需要打印第二個JSON數組,而不是第一個。如果我不清空數據點數組,它將返回兩個數組,但是linedataline的數組長度爲8,並且不會分開這兩個數組。這裏有什麼問題?

+1

更換datapoints.length = 0;這並不真的有什麼關係排序或JSON。您似乎想要將一組對象轉換爲不同的格式/結構。 –

+0

...我知道。感謝您的輸入? –

回答

1

var datapoints = [];

var data = {"label":[{"name":"Government Schools", 
      "datapoints":[{"year":"2007-2008","total":"1300"}, 
         {"year":"2008-2009","total":"1280"}, 
         {"year":"2009-2010","total":"1100"}, 
         {"year":"2010-2011","total":"1400"}] 
     }, 
     {"name":"Total Schools", 
      "datapoints":[{"year":"2007-2008","total":"900"}, 
         {"year":"2008-2009","total":"1000"}, 
         {"year":"2009-2010","total":"1300"}, 
         {"year":"2010-2011","total":"999"}] 
     }] 
}; 
var linedataline = []; 
for(var i=0; i<data.label.length;i++){ 
       var datapoints = []; 
       for(var j=0;j<data.label[i].datapoints.length;j++){ 
        datapoints.push({ 
           x: j+1, 
           y: data.label[i].datapoints[j].total, 
           label: data.label[i].datapoints[j].year 
        }); 
       } 
       linedataline.push({ 
         dataPoints: datapoints 
       }); 
      } 
1

您應該創建新的實例。

for(var i=0; i<data.label.length;i++){ 
    var datapoints = []; 
    ... 
} 
+0

是的,我創建了它。沒有在代碼中提到它。我創建了所有的實例。 –

+0

但是你想爲循環中的每個數據點創建新的實例。 – emn178

+0

哦,我把所有的數組創建在循環外部。我沒有在循環內創建一個實例。這似乎工作。非常感謝! –