与this entry有关。我正在尝试使用下面的数据集创建一个轮换组。但是,reduce()
函数似乎没有被调用。我不清楚为什么。下面是我的代码。
queue()
.defer(d3.json, "assets/data/datatest1.json")
.await(grpData);
function grpData(err, statData) {
var ndx = crossfilter(statData);
console.log(`Number of records in dataset: ${ndx.size()}`);
buildStatYearSel(ndx);
}
function buildStatYearSel(ndx) {
var dim = ndx.dimension(function(d) {return d.Year});
var rotatedGrp = rotate(dim, ['Year', 'StatKey']);
var foo = 1; // Nice place to set a break point
}
function rotate(dim, cols) {
var _groupAll = dim.groupAll().reduce(
function(p, v) {
cols.forEach(function(c) { // add
p[c] += v[c];
});
return p;
},
function(p, v) { // remove
cols.forEach(function(c) {
p[c] -= v[c];
});
return p;
},
function() { // init
console.log("In init"); // never see this in console.
var p = {};
cols.forEach(function(c) {
p[c] = 0;
});
return p;
});
return {
all: function() {
return d3.map(_groupAll.value()).entries();
}
};
}
数据如下:
[
{"Year": "2002", "StatKey": "02437", "First": "108.26", "Tenth": "101.20",
"Last": "81.73"},
{"Year": "2002", "StatKey": "102", "First": "81.24", "Tenth": "75.59",
"Last": "50.37"},
{"Year": "2002", "StatKey": "326", "First": "76.47", "Tenth": "57.14",
"Last": "5.88"},
{"Year": "2003", "StatKey": "02437", "First": "106.03", "Tenth": "101.79",
"Last": "87.44"},
{"Year": "2003", "StatKey": "102", "First": "77.86", "Tenth": "73.95",
"Last": "48.02"},
{"Year": "2003", "StatKey": "326", "First": "55.56", "Tenth": "47.50",
"Last": "11.76"},
{"Year": "2004", "StatKey": "328", "First": "74.24", "Tenth": "68.65",
"Last": "48.03"},
{"Year": "2004", "StatKey": "103", "First": "73.27", "Tenth": "69.55",
"Last": "54.68"},
{"Year": "2004", "StatKey": "102", "First": "77.23", "Tenth": "73.13",
"Last": "49.88"}
]
非常感谢任何指导。