0

对不起,如果这是一个非常n00b的问题,但我刚刚进入轨道并且无法解决这个问题。

我目前正在从一个站点使用 Analytics。并想将数据放入图表中。但是,当我取回数据时,我想要的东西不正常。目前返回的数据是:

{"legend_size":1,"data":{"series":["2013-06-20","2013-06-21","2013-06-22","2013-06-23","2013-06-24","2013-06-25","2013-06-26"],"values":{"undefined":{"2013-06-26":41,"2013-06-24":2,"2013-06-25":55,"2013-06-22":0,"2013-06-23":1,"2013-06-20":0,"2013-06-21":0}}}}

我需要的是按日期排序的 ["data"]["values"]["undefined"] 位。

我知道这是一个简单的问题。但是我到处都看了,无法弄清楚。

4

1 回答 1

0

好的,正如我在评论中所说,您不能真正排序和对象,因为它具有任意顺序,因此您必须使用数组。

我的解决方案是:

    var objectFromAnalytics = {"2013-06-26":41,"2013-06-24":2,"2013-06-25":55,"2013-06-22":0,"2013-06-23":1,"2013-06-20":0,"2013-06-21":0},
        toSort = [], 
        dateParts;
    for (var date in objectFromAnalytics) {
       dateParts = date.split("-");

       toSort.push({ date: new Date(dateParts[0], (dateParts[1] - 1), dateParts[2]), value: objectFromAnalytics[date] });
    }


    var sorted = toSort.sort(function(a,b){
      return a.date < b.date ? -1 : a.date > b.date ? 1 : 0; //you can change this to sort by value if you want
    });

//sorted == [{ date: dateObject, value: value from analytics} , { ... }]

您可能可以少写几行就完成此操作,但我认为这样可以理解:)

于 2013-06-27T02:02:21.000 回答