3 Stimmen

Crossfilter JavaScript Maximale Aufrufstapelgröße überschritten, keine NaN

Ich spiele gerade mit crossfilter.js, siehe https://github.com/square/crossfilter/wiki/API-Reference und http://square.github.io/crossfilter/.

Angeblich ist die Bibliothek sehr gut darin, Daten schnell zu verarbeiten. Um es zu testen, erstelle ich zunächst ein Array mit zufälligen Zahlen, ein großes, mit einer Million Zeilen.

    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 )

Bis hierhin gut, aber dann, wenn ich versuche, einige grundlegende crossfilter-Aktionen auszuführen, gehen die Dinge furchtbar schief.

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

Ich habe gelesen, dass dieser Fehler durch NaN-Werte verursacht werden kann, aber alle Werte, die ich generiert habe, sind offensichtlich Floats, also nehme ich an, dass etwas anderes die Probleme verursacht. Irgendwelche Hinweise?

9voto

Pointy Punkte 387467

Ich denke, du musst tatsächlich eine Gesamtsumme berechnen:

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

Die Funktion, die du an .dimension() übergibst, gibt undefined zurück, da keine der Zeilen deines Datensatzes über eine "total" Eigenschaft verfügt.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X