2014-09-26 58 views
9

聲明:我不知道我在做什麼。說真的,我喜歡數據,並認爲自己做這將是學習編程和使用數據庫並使網絡應用成爲酷酷傢伙的好方法。我一直在尋找最後一天的答案,所有我能找到的例子都無法用我的代碼工作。日期使用d3.js排序

這裏是我使用的完整代碼和數據的粘貼bin。這是對d3.js github上發現了樣品線圖,在充滿了我的數據 http://pastebin.com/7aW6wegd

的JSON是從CouchDB的數據庫來

我可以得到的線條吸引,但他們是一個爛攤子:

enter image description here

我認爲這是由不日期排序正確,因爲在控制檯它們的排列無序造成的。我無法弄清楚如何讓日期正確排序。使用d3.time.format會引發錯誤(您可以從我們從示例線形圖中獲取的代碼中看到它,它們會使用它來解析日期。即使在嘗試轉向後,將它用於我的數據也會引發錯誤時間戳到日期),我似乎無法弄清楚如何讓日期在couchdb中排序。

+3

這看起來不錯,第一次嘗試誠實。只需在定義日期對象之前對日期進行排序。 https://github.com/mbostock/d3/wiki/Arrays – 2014-09-26 20:02:33

回答

11

爲什麼不在你的forEach之後對你的數據進行排序,在那裏填充date屬性?這裏是一個非常基本實現對象的數組的分揀機:

var data = [ 
     {date: new Date(2000)}, 
     {date: new Date(1000)} 
    ]; 

function sortByDateAscending(a, b) { 
    // Dates will be cast to numbers automagically: 
    return a.date - b.date; 
} 

data = data.sort(sortByDateAscending); 

還有爲Array.prototype.sort一個不錯的documentation

+2

謝謝。這工作完美。我試圖寫/借用幾種失敗的排序功能。這一次比我找到的最簡單的兩行或三行短。 – Trel 2014-09-26 20:16:11

+0

我不知道爲什麼這會返回mm/dd/yyyy當國際標準是yyyy/dd/mm – 2016-03-01 21:29:00

+0

@Claudiu由於某些原因,OP決定用'd3.time.format(「%x」)格式化日期'(參見pastebin第46行)。根據文檔格式日期爲「%m /%d /%Y」,請參閱https://github.com/mbostock/d3/wiki/Time-Formatting#format如果您願意,可以選擇其他格式。 – Oleg 2016-03-01 21:42:53