Получение значений в crossfilter.dimension
Привет, я новичок в JS и Crossfilter. Я использую кроссфильтр с моими данными (.csv
файл) и извлекли отдельные значения в столбце, используя
var scoreDim = ppr.dimension(function (d) {
return d.score;
});
Также я мог бы получить количество для каждого значения, используя
var scoreDimGroup = scoreDim.group().reduceCount();
Я мог бы использовать dc.js
построить график и результат выглядит правильно. Но как мне получить значения в scoreDim
а также scoreDimGroup
так что я могу использовать его для дальнейшей обработки в моем коде. Когда я смотрю на объект с помощью отладчика, я мог видеть кучу функций, но не мог видеть фактические значения, содержащиеся в объектах.
3 ответа
scoreDim.top(Infinity)
получит записи.
scoreDimGroup.top(Infinity)
извлечет группы (пары ключ-значение значения измерения и счетчика).
Как правило, такие вещи хорошо описаны в документации по Crossfilter API.
Вы можете использовать метод top объекта group:
var groupings = teamMemberGroup.top(Infinity);
Это возвращает массив групп, который будет иметь структуру, которую вы построили в методе Reduce. Например, чтобы вывести ключ и значение, вы можете сделать это: groupings.forEach(function (x) { console.log(x.key + x.value.projectCount); });
Вы можете получить доступ к значениям измерения таким же образом:
var dimData = teamMemberDimension.top(Infinity);
dimData.forEach(function (x) {
console.log(JSON.stringify(x));
});
Вот простой пример этого: http://jsfiddle.net/djmartin_umich/T5v4N/
Расти имеет хороший учебник о том, как это работает на http://blog.rusty.io/2012/09/17/crossfilter-tutorial/
Если вы хотите просмотреть эти значения в консоли, вы можете использовать эту функцию print_filter, которая была упомянута в руководстве!
( http://www.codeproject.com/Articles/693841/Making-Dashboards-with-Dc-js-Part-1-Using-Crossfil)
По сути, вы должны включить этот бит кода в рендеринг javascript диаграмм перекрестного фильтра до того, как определите свой источник данных или переменную ndx:
function print_filter(filter) {
var f = eval(filter);
if (typeof(f.length) != "undefined") {}else{}
if (typeof(f.top) != "undefined") {f=f.top(Infinity);}else{}
if (typeof(f.dimension) != "undefined") {f=f.dimension(function(d) { return "";}).top(Infinity);}else{}
console.log(filter+"("+f.length+") = "+JSON.stringify(f).replace("[","[\n\t").replace(/}\,/g,"},\n\t").replace("]","\n]"));
};
Тогда вы можете просто запустить print_filter(ScoreDim) в вашей консоли! Это так просто! Вы можете использовать это, чтобы увидеть все объекты, которые вы создаете с использованием перекрестного фильтра, включая группы и т. Д.
Надеюсь это поможет!