如何使数据可用于匿名函数

时间:2017-01-07 09:45:55

标签: javascript undefined crossfilter

我知道这可能是一个非常愚蠢的问题,但是 我想让这段代码工作:

  • 我加载了一些json数据
  • 我创建了一个crossfilter
  • 我制作尺寸(基于数据类型)
  • 我过滤所以我只获取类型文件
  • 的数据

但是在这个过滤器中,我不能使用匿名函数,因为没有定义d。解决这个问题的最佳方法是什么?

ps:我知道我可以通过使用filterExact(" File")解决这个问题,但我真的想使用filterFunction,所以我可以过滤掉多种类型。

d3.json("data.json", function(data) {
    cf = crossfilter(data);
    byType = cf.dimension(function(d) { return d.type; });
    d3.selectAll(".myCheckbox").on("change",filter);
    filter_test();

    function filter_test() {
        byType.filterFunction(function (d) {
            return (d.type == "File");
        });
        tabulate(byType.top(15));
    }
}

https://jsfiddle.net/MM2x13/663r3fqs/7/

2 个答案:

答案 0 :(得分:1)

使用维度的值调用传递给filterFunction的函数,即在创建维度时作为参数传递的函数返回的值。

传递给d的函数中访问的filterFunction因此已经是您期望的type值。 return (d == "File")应该做到这一点。

答案 1 :(得分:0)

尝试:return(d.type ===" File");

否则我相信你只是比较字符串"文件"。