我正在尝试使用 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");
}
我该如何进行这项工作?如果我以带有“ChartOrder”值的字符串形式发送dimensionProperty,则它不起作用。有什么方法可以向此函数发送我希望它从维度返回的数据的哪个属性?
最佳答案
使用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");
}
关于javascript - 如何参数化对象的属性以便在 crossfilter.js 中使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43072002/