使用交叉滤波器的递归误差太大



以下页面在Chrome中加载,但在Firefox/IE中,错误"太多递归"发生在crossfilter.js脚本中(crossfilter.js)。

链接:http://bit。ly/1 epx0gs

如何避免(或调试)?

编辑

Chrome可以用破折号解析日期("6-12-2013"),但是firefox/ie需要空格("6 12 2013")

如果没有可运行的示例,我真的无法验证这是问题,但您的维度中可能有非自然排序的值。您需要转换维度值,并确保所有值都有效。相关的部分看起来是:

self.data.push({
            index:index,
            starttime:new Date(d.starttime),
            sex:d.gender == '' ? 'Non-Subscriber' : d.gender,
            value:d.count
        })

我至少会把这个改成:

self.data.push({
                index:+index,
                starttime:new Date(d.starttime),
                sex:d.gender == '' ? 'Non-Subscriber' : '' + d.gender,
                value:+d.count
            })

Date()仍然可以绊倒你,如果你有无效的d.starttime值,所以如果你仍然得到错误,你可能要尝试用"new Date()"来替换它。

同样,不能保证这是导致问题的原因,但是当我得到这些递归错误时,这通常是原因。

我刚刚遇到了同样的问题,但解决方案不是日期格式,而是js文件本身的编码。也许这能帮到别人。

我使用以下维度做一些过滤:

CF_data = crossfilter(data);
CF_data_id = CF_data.dimension(function(d) { return  +d.properties['Código']; });

注意返回语句的选择器中的西班牙语"o"字符。

并抛出以下错误:

# too much recursion crossfilter.js:174:9

检查完一切后,我注意到我的文件突然被编码为ANSI而不是UTF8。所以在notepadd++中,我将文件转换回UTF8,错误就消失了。

最新更新