【问题标题】:Crossfilter javascript Maximum call stack size exceeded, no NanCrossfilter javascript超出最大调用堆栈大小,没有Nan
【发布时间】:2013-09-09 11:59:24
【问题描述】:

我在玩crossfilter.js,请参阅https://github.com/square/crossfilter/wiki/API-Referencehttp://square.github.io/crossfilter/

据说该库非常擅长快速处理数据。所以为了测试它,我首先创建了一个随机数数组,一个很大的,有一百万行。

    function create_random_json(){
        result = []     
        for (var i = 1000000 - 1; i >= 0; i--) {
            result.push( { 'a': Math.random() , 'b' : Math.random() * 5  } )
        }
        return result
    }

    json_array = create_random_json() 

    df = crossfilter( json_array )

到目前为止一切都很好,但是当我尝试做一些基本的交叉过滤器时,事情变得非常错误。

df.dimension( function(d){ return d.total; }); 
RangeError: Maximum call stack size exceeded

我读到这个错误可能是由NaN 值引起的,但我生成的所有值显然都是浮点数,所以我假设是其他原因造成了问题。有什么提示吗?

【问题讨论】:

  • “总”属性应该来自哪里? Crossfilter 文档中的示例代码涉及具有“total”属性的对象;你的对象没有。
  • 另外请考虑使用分号和var 声明:)
  • 看来我盲目地复制了文档。我没有看到totald 的属性,而不是函数。

标签: javascript d3.js crossfilter


【解决方案1】:

我认为您实际上需要计算总数:

df.dimension(function(o) { return o.a + o.b; });

您传递给.dimension() 的函数返回undefined,因为您的数据集的所有行都没有“总计”属性。

【讨论】:

    猜你喜欢
    • 2019-05-21
    • 1970-01-01
    • 2012-06-26
    • 1970-01-01
    • 2012-03-18
    • 2013-08-23
    • 1970-01-01
    • 2015-10-24
    • 2015-12-29
    相关资源
    最近更新 更多