我正在玩 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 值引起的,但我生成的所有值显然都是浮点数,所以我假设是其他原因导致了问题。任何提示?

最佳答案

我认为你需要实际计算一个总数:

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

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

关于javascript - Crossfilter javascript超出最大调用堆栈大小,没有Nan,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/18639913/

10-13 09:13