2016-11-17 40 views
0

我已经在这个格式data.json:Dimple.js不喜欢我的数组

{ 
    "Users": [ 
     { 
      "userName": "Herbie", 
      "weigh-in data": [ 
       { "date": "2016.01.04", "weight": "114.3" }, 
       { "date": "2016.01.05", "weight": "114.6" }, 
       { "date": "2016.01.06", "weight": "114.9" } 
      ] 
     }, 
     { 
      "userName": "Wayne", 
      "weigh-in data": [ 
       { "date": "2016.02.01", "weight": "120.3" }, 
       { "date": "2016.02.05", "weight": "123.6" }, 
       { "date": "2016.02.06", "weight": "123.9" } 
      ] 
     } 
    ] 
} 

//等等,更多的用户对象

在我的应用程序:用户的选择是一个ajax调用获取这些数据,我循环它以获取所选用户的权重数据,并且我成功将这些数据呈现到一个表格中。

现在我想要使用相同的结果的酒窝图表中,但显然酒窝不喜欢我chartData阵列:

var dataObj = JSON.parse(jsonData); 
var usersArray = dataObj.Users; 
var chartData = []; 
// etc. SNIP 

for (var obj of usersArray) { 
    if (obj.userName === selUser) { // weigh-ins of the selected user only 
     dataRows.innerHTML = ""; 
     for (var i = 0, j = selUserData.length; i < j; i++) { 
      var dataDate = selUserData[i].date; 
      var dataWeight = selUserData[i].weight; 

      chartData.push('{ "User"' + ': ' + '"'+selUser+'", ' + '"Date":' + ' ' + '"'+dataDate+'", ' + '"Weight":' + ' ' + '"'+dataWeight+'" }'); 

      // SNIP: build rows from the data, load up the table, no problem 
      dataRows.innerHTML += row; 
     } // selUserData loop 

var svg = dimple.newSvg("#chartContainer", 800, 600); 
var chart = new dimple.chart(svg, chartData); 
chart.setBounds(60, 30, 505, 305); 
var x = chart.addCategoryAxis("x", "Date"); 
x.addOrderRule("Dates"); 
var y = chart.addCategoryAxis("y", "Weight"); 
y.addOrderRule("Weights"); 

var s = chart.addSeries("weigh-ins", dimple.plot.line); 
chart.draw(); 

...这将导致非图表英寸不过,如果我CONSOLE.LOG或警报(chartData)和结果集chartData,即:

var chartData = [ 
    { "User": "Wayne", "Date": "2016.02.01", "Weight": "180.3" }, 
    { "User": "Wayne", "Date": "2016.02.05", "Weight": "123.6" }, 
    { "User": "Wayne", "Date": "2016.02.06", "Weight": "153.9" } 
] 

...然后我得到一个图表,ERGO我的困惑。

任何了解大为赞赏,

威士忌

回答

1

你推的JSON到您的数组作为字符串不是对象,它应该是:

chartData.push({ "User": selUser, "Date": dataDate, "Weight": dataWeight }); 

其中有作为额外的好处读起来更容易!

+0

啊,非常感谢约翰。我可以宣誓这是我构建chartData数组的方式之一(并确认它是一个数组对象)......也许不是,或者我可能有另一个错误。无论如何,非常感谢您的帮助,并花时间发布;我现在有一个图表! –