Я использую попытку подсчитать количество "Manager" "MIT" и "Instore" в файле .csv.Код, который у меня есть, работает для нахождения всех «Менеджеров», но не работает для остальных двух.
Я попытался разделить функцию на 3 отдельные функции, так как я думал, что проблема, возможно, заключалась в использовании большего количествачем один dc.numberDisplay в функции, но это не сработало.Я попробовал эту функцию, поэтому есть только одна, если она ищет Менеджеров, она работает, MIT - нет, а Instores - нет.Я попытался изменить порядок кода и до сих пор ничего.Я поместил console.log (p.mit_count) в каждой строке add_item, remove_item и initialize.Я поместил console.log (d.value.mit_count) в valueAccessor.
Scott,Instore,3,BMC,96
Mark,Instore,4,Intro,94
Wendy,Instore,3,Intro,76
Lucas,Instore,2,Intro,96
.defer(d3.csv, "data/Results.csv")
.await(makeGraphs)
//function for making and rendering graphs
function makeGraphs(error, staffData) {
var ndx = crossfilter(staffData);
show_number_of_staff(ndx);
dc.renderAll();
}
function show_number_of_staff(ndx) {
var dim = ndx.dimension(dc.pluck('Rank'));
function add_item(p, v) {
if (v.Rank == "Manager") {
p.manager_count++;
}
else if (v.Rank == "MIT") {
p.mit_count++;
}
else if (v.Rank == "Instore") {
p.instore_count++;
}
return p;
}
function remove_item(p, v) {
if (v.Rank == "Manager") {
p.manager_count--;
}
else if (v.Rank == "MIT") {
p.mit_count--;
}
else if (v.Rank == "Instore") {
p.instore_count--;
}
return p;
}
function initialise(p, v) {
return { manager_count: 0, mit_count: 0, instore_count: 0 };
}
var staffCounter = dim.group().reduce(add_item, remove_item, initialise);;
dc.numberDisplay("#managerCount")
.formatNumber(d3.format(".0"))
.valueAccessor(function(d) {
return d.value.manager_count;
})
.group(staffCounter);
dc.numberDisplay("#mitCount")
.formatNumber(d3.format(".0"))
.valueAccessor(function(d) {
return d.value.mit_count;
})
.group(staffCounter);
dc.numberDisplay("#instoreCount")
.formatNumber(d3.format(".0"))
.valueAccessor(function(d) {
return d.value.instore_count;
})
.group(staffCounter);
}
console.log(p.mit_count)
показывает, что он считается до 13 (как я и ожидал), но затемв valueAccessor
console.log(d.value.mit_count)
показывает 0. Я не могу понять, почему это работает для «Менеджера», но ничего больше.Я почти смущен, что это заняло у меня больше недели.Это кажется таким простым!