What causes the "Uncaught RangeError: Maximum call stack size exceeded" and how to remove it?

What causes the "Uncaught RangeError: Maximum call stack size exceeded" and how to remove it?

我正在使用 ajax 中的数据创建交叉过滤器维度。创建维度变量的正确方法是什么?

    var url = "http://" + window.location.host + "/twitter-data"; 

    $.ajax({
        url: url,
        async: false,
        success: function(data) {
                makeGraphs(data);
        }

    });

    function makeGraphs(records){
        var dateFormat = d3.time.format("%Y-%m-%dT%H:%M:%S+%H:%M");

        var data = records.map(obj => {

            var res = dateFormat.parse(obj._source.published)
            return res;
        });

        console.log(data[0]);

        //Crossfilter
        var ndx = crossfilter(data);
        var all = ndx.groupAll


        //Dimensions
        var hashtagDim = ndx.dimension( function (d) {return d.hashtags; }, true);

'

控制台上的错误如下所示:

Uncaught RangeError: Maximum call stack size exceeded

at quicksort (crossfilter.js:172)

at sort (crossfilter.js:169)

然后就这样继续下去。

代码片段的最后一行产生错误。我看到的解决方案说这是一个递归函数调用,但我不确定我需要更改代码以避免此错误。

您确定您的数据元素上有“标签”属性吗?

通常,当我使用交叉过滤器 运行 遇到相同的错误时,这是​​因为我一直在尝试使用不存在的 属性(即值函数 returns undefined)。对 属性 使用错误的大小写也会导致 undefined return 值,因为属性区分大小写。

通常,维度(或组)值函数可能永远不会 return NaNundefinednullNatural ordering of dimension and group values.

一个可能的根本原因是,如果您在 AJAX 请求完成之前启动交叉过滤器。但这只是猜测,因为我对你的代码了解不够。