javascript - 如何参数化对象的属性以便在 crossfilter.js 中使用?

标签 javascript jquery crossfilter

我正在尝试使用 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/

相关文章:

javascript - 诸如socket通信之类的东西需要utf-8编码吗?

javascript - 如何确定 JEST 是否正在运行代码?

javascript - 使用 React 扩展运算符在数组中设置 State

javascript - 如何通过javascript设置OSRM(开源路由机)路由标记?

dc.js - 避免在自定义交叉过滤器归约函数中进行多次求和

javascript - 在 crossfilter.js 中按多个维度排序

javascript - 连接到 CrossFilter 的 D3 JS 布局树

jquery - 使用 class = 取消按钮禁用 jQuery 验证不起作用

javascript - 根据另一个选择器中的值动态填充一个选择器

jquery - 带滚动条显示/隐藏 div