2013-09-05 2 views
3

crossfilter.js으로 재생 중입니다. https://github.com/square/crossfilter/wiki/API-Referencehttp://square.github.io/crossfilter/을 참조하십시오.Crossfilter javascript 최대 호출 스택 크기를 초과했습니다. 아니요

아마도 라이브러리는 데이터를 신속하게 처리 할 때 매우 뛰어납니다. 그래서 그것을 테스트하기 위해 먼저 100 만 개의 행을 가진 큰 숫자의 난수 배열을 만듭니다.

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 값에 의해 발생 될 수 있음을 읽었습니다하지만 수레 내가 생성 한 모든 값은 분명히있다, 그래서 문제를 일으키는 다른 것을 가정하고있다. 어떤 힌트? 데이터 집합의 행의 아무도는 "총"속성이 없기 때문에 당신이 .dimension()에 전달하는 기능이 undefined을 반환

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

:

+1

"total"속성은 어디에서 가져온 것입니까? Crossfilter 설명서의 샘플 코드에는 "총"속성이있는 객체가 포함됩니다. 당신의 물건은 그렇지 않습니다. – Pointy

+1

또한 세미콜론과'var' 선언을 사용하는 것을 고려하십시오 :) – Pointy

+0

나는 맹목적으로 문서를 복사 한 것 같습니다. 나는 '총'이 'd'의 속성이지 기능이 아니라는 것을 알지 못했다. – cantdutchthis

답변

8

나는 당신이 실제로 컴퓨팅 총에 필요가 있다고 생각합니다.

관련 문제