我從D3.js嵌套功能中得到一些奇怪的行爲,好像密鑰和彙總將test_date從Date對象轉換爲字符串。D3嵌套格式錯誤的日期
這裏是我的代碼:
var data = [{
"test_type": "x1",
"test_date": "2014-07-15"
}, {
"test_type": "x3",
"test_date": "2014-07-16"
}, {
"test_type": "x2",
"test_date": "2014-07-27"
}, {
"test_type": "x1",
"test_date": "2014-07-28"
}];
var parseDate = d3.time.format("%Y-%m-%d").parse;
data.forEach(function(d) {
d.test_date = parseDate(d.test_date);
});
var result = d3.nest()
.key(function(d) {
return d.test_type;
})
.key(function(d) {
return d.test_date;
})
.rollup(function(leaves) {
return leaves.length;
})
.entries(data);
,其結果是:
[{
"key": "x1",
"values": [{
"key": "Tue Jul 15 2014 00:00:00 GMT-0600 (Mountain Daylight Time)",
"values": 1
}, {
"key": "Mon Jul 28 2014 00:00:00 GMT-0600 (Mountain Daylight Time)",
"values": 1
}]
}, {
"key": "x3",
"values": [{
"key": "Wed Jul 16 2014 00:00:00 GMT-0600 (Mountain Daylight Time)",
"values": 1
}]
}, {
"key": "x2",
"values": [{
"key": "Sun Jul 27 2014 00:00:00 GMT-0600 (Mountain Daylight Time)",
"values": 1
}]
}]
我需要的嵌套的鍵值是日期的對象不是字符串。有沒有人知道這會導致什麼?
這裏是問題http://jsfiddle.net/2ryahc9L/1/
恐怕這不是「不正確」的行爲 - 它是如何定義的方法,[鍵總是被視爲字符串](https://github.com/mbostock/d3/ wiki/Arrays#nest_key)(與JavaScript對象或d3.map hashmap相同,它們在內部用於創建嵌套)。通常,我會建議從values數組中的第一個條目訪問原始數據值,但彙總功能會刪除該選項。這並不理想,但您應該能夠將字符串強制退回到一個日期而不會丟失數據。 – AmeliaBR 2014-08-29 22:13:04
謝謝你的迴應。這就是我最終做的。 – 2014-08-29 22:13:39