我正在尝试使用Crossfilter.js生成图表,使用将传递给图表方法的数据。这是我正在使用的代码:
function makeChart(data) {
var dataCrossfilter = crossfilter(data);
var chartOrderDim = dataCrossfilter.dimension(function (d) {
return d.ChartOrder;
});
var chartDataGroup = chartOrderDim.group();
var barChart = dc.barChart("#chartExample2");
}
我遇到的问题是,在这个例子中,我知道我发送给这个方法的数据是什么,所以当我去创建维度时,我正在返回
d.ChartOrder
因为我知道ChartOrder是数据的属性之一。例如,数据是:
var data = [
{ChartId: 1, ChartOrder: 1, ChartName: "Test1"},
{ChartId: 2, ChartOrder: 2, ChartName: "Test2"},
{ChartId: 3, ChartOrder: 3, ChartName: "Test3"},
{ChartId: 4, ChartOrder: 4, ChartName: "Test4"},
{ChartId: 5, ChartOrder: 3, ChartName: "Test5"},
{ChartId: 6, ChartOrder: 1, ChartName: "Test6"},
{ChartId: 7, ChartOrder: 2, ChartName: "Test7"}
];
我的问题是,有没有办法参数化d.ChartOrder?假设我正在向此发送数据,我还想告诉维度返回哪个键?例如:
function makeChart(data, dimensionProperty) {
var dataCrossfilter = crossfilter(data);
var chartOrderDim = dataCrossfilter.dimension(function (d) {
return d.dimensionProperty;
});
var chartDataGroup = chartOrderDim.group();
var barChart = dc.barChart("#chartExample2");
}
如何使这项工作?如果我将dimensionProperty作为带有“ChartOrder”值的字符串发送,则它不起作用。有没有办法发送这个函数我希望它从维度返回的数据属性?
答案 0 :(得分:1)
使用d[dimensionProperty]
访问dimensionProperty而不是使用点表示法。
然后,您将把“ChartOrder”作为第二个参数的字符串传递给您的函数:
function makeChart(data, dimensionProperty) {
var dataCrossfilter = crossfilter(data);
var chartOrderDim = dataCrossfilter.dimension(function (d) {
return d[dimensionProperty];
});
var chartDataGroup = chartOrderDim.group();
var barChart = dc.barChart("#chartExample2");
}