Gettin 交叉过滤器.js错误“太多递归”

Gettin crossfilter.js error "too much recursion"

本文关键字:太多 递归 太多递归 错误 过滤器 js Gettin      更新时间:2023-09-26

我在交叉过滤器上收到错误"too much recursion".js 如何修复此错误。

这是我的javascript代码(我从php提供数据。所以数据没有错。我认为尺寸错误):

 var data= [{
          HASTANE: 'ANK',
          SEHIR: 'Ankara',
          BOLGE: 'İç Anadolu Bölgesi ',
          KOD: 'C00',
          KODACIKLAMA: 'Dudağın habis neoplazması',
          KURUM: 'Devlet' , 
          DONEM: 'OCAK 2014',
          SAYI: 2, 
          INSIDANS:2
        },{
          HASTANE: 'TKD',
          SEHIR: 'Tekirdağ',
          BOLGE: 'Marmara Bölgesi ',
          KOD: 'C00',
          KODACIKLAMA: 'Dudağın habis neoplazması',
          KURUM: 'Devlet' , 
          DONEM: 'OCAK 2014',
          SAYI: 1, 
          INSIDANS:1
        },{
          HASTANE: 'ADN',
          SEHIR: 'Adana',
          BOLGE: 'Akdeniz Bölgesi',
          KOD: 'C00',
          KODACIKLAMA: 'Dudağın habis neoplazması',
          KURUM: 'Devlet' , 
          DONEM: 'OCAK 2014',
          SAYI: 1, 
          INSIDANS:1
        },{
          HASTANE: 'ESKYM',
          SEHIR: 'Eskişehir',
          BOLGE: 'İç Anadolu Bölgesi ',
          KOD: 'C00',
          KODACIKLAMA: 'Dudağın habis neoplazması',
          KURUM: 'Devlet' , 
          DONEM: 'OCAK 2014',
          SAYI: 1, 
          INSIDANS:1
        },{
          HASTANE: 'IST',
          SEHIR: 'İstanbul',
          BOLGE: 'Marmara Bölgesi ',
          KOD: 'C00',
          KODACIKLAMA: 'Dudağın habis neoplazması',
          KURUM: 'Devlet' , 
          DONEM: 'OCAK 2014',
          SAYI: 2, 
          INSIDANS:2
        }] 
var mapChart = dc.bubbleOverlay("#map").svg(d3.select("#map svg"));
 var donemRowMapChart = dc.rowChart("#donem-map-chart");
 var bolgeRowMapChart = dc.rowChart("#bolge-map-chart");

        var d= [data];
        var data = crossfilter(d);
        var sehir=data.dimension(function(d){return d.SEHIR;});
        var donem=data.dimension(function(d){return d.DONEMADI;});
        var bolge=data.dimension(function(d){return d.BOLGE;});
        var sehirGroup=sehir.group().reduceSum(function(d){return d.INSIDANS});
        var donemGroup=donem.group().reduceSum(function(d){return d.INSIDANS});
        var bolgeGroup=bolge.group().reduceSum(function(d){return d.INSIDANS});
        mapChart.width(600)
                .height(450)
                .dimension(sehir)
                .group(sehirGroup)
                .radiusValueAccessor(function(p) {
                    return p.value;
                })
                .r(d3.scale.linear().domain([0, 200000]))
                .colors(["#ff7373","#ff4040","#ff0000","#bf3030","#a60000"])
                .colorDomain([13, 30])
                .colorAccessor(function(p) {
                    return p.value;
                })
                .title(function(d) {
                    return "City: " + d.key
                            + "'nINSIDANS SAYISI: " +d.value;
                })
                .point("TR.GA", 364, 400)
                .point("TR.ED", 395.5, 383)
                .debug(false);
 donemRowMapChart
                .width(300)
                .height(200)
                .margins({top: 5, left: 10, right: 10, bottom: 20})
                .dimension(donem)
                .group(donemGroup)
                .colors(d3.scale.category10())
                .elasticX(true)
                .xAxis().ticks(4);   
 bolgeRowMapChart
                .width(300)
                .height(200)
                .margins({top: 5, left: 10, right: 10, bottom: 20})
                .dimension(bolge)
                .group(bolgeGroup)
                .colors(d3.scale.category10())
                .elasticX(true)
                .xAxis().ticks(4);                              
    dc.renderAll(); 

第 178 行,列 4 交叉过滤器引发错误.js:

function quicksort(a, lo, hi) {
    // Compute the two pivots by looking at 5 elements.
    var sixth = (hi - lo) / 6 | 0,
        i1 = lo + sixth,
        i5 = hi - 1 - sixth,
        i3 = lo + hi - 1 >> 1,  // The midpoint.
        i2 = i3 - sixth,
        i4 = i3 + sixth;
........................}

那么我该如何修复错误。

感谢您的帮助

通常,

当我的维度不是自然排序时,就会发生这种情况。您通常需要强制转换用于创建维度的任何值。具体而言,DONEMADI 可能不是许多数据对象的属性,因为它不会出现在示例数据中。我会将您的代码更改为

var sehir=data.dimension(function(d){return "" + d.SEHIR;});
var donem=data.dimension(function(d){return "" + d.DONEMADI;});
var bolge=data.dimension(function(d){return "" + d.BOLGE;});
var sehirGroup=sehir.group().reduceSum(function(d){return +d.INSIDANS});
var donemGroup=donem.group().reduceSum(function(d){return +d.INSIDANS});
var bolgeGroup=bolge.group().reduceSum(function(d){return +d.INSIDANS});

如果这样做,您仍然看到问题吗?