2017-11-30 1 views
0

처리 할 함수의 부분이 변수를 기반으로하는 하나의 항목이있는 객체 내부의 함수를 정의하려고합니다. 아래 코드에서 myColumn의 현재 값으로 *dynamicValue*을 저장하려면 어떻게해야합니까? 모든 변수가 샘플 섹션에 정의하지만 내 실제 코드에서이 값이 현재 그것은 더 될 수 있습니다 3. 1 사이의 숫자로 변경되도록 열심히 dataCount에 대한 값을 코딩 한함수의 일부로 변수가있는 객체 내부의 함수 정의

var viewColumns = [0]; 
    var count = 0; 
    var dataCount = 3; 
    var total = 0; 
    while (count < dataCount) { 
    var myColumn = count + 1; 
    var viewColumnDescription = { 
     calc: function (dt, row) { 
      return dt.getValue(row, *dynamicValue*); 
     }, 
     type: "number", 
     role: "annotation" 
     }; 
    viewColumns.push(myColumn); 
    viewColumns.push(viewColumnDescription); 
    count += 1; 
    } 

주 나중에 나 또한 항목을 정의하기 위해 루프를 사용할 수 있기를 원합니다. 내가 이런 짓을하는 것처럼 결과 객체가 있어야한다이 경우

: 2 대신 3이었다

viewColumns = [0, 
     1, { 
     calc: function (dt, row) { 
      return dt.getValue(row, 1); 
     }, 
     type: "number", 
     role: "annotation" 
     }, 
     2, { 
     calc: function (dt, row) { 
      return dt.getValue(row, 2); 
     }, 
     type: "number", 
     role: "annotation" 
     }, 
     3, { 
     calc: function (dt, row) { 
      return dt.getValue(row, 3); 
     }, 
     type: "number", 
     role: "annotation" 
     }, 
     { 
     calc: function (dt, row) { 
      return 0; 
     }, 
     label: "Total", 
     type: "number", 
     }, 
     { 
     calc: function (dt, row) { 
      return 'Total: ' + (dt.getValue(row, 1) 
          + dt.getValue(row, 2) 
          + dt.getValue(row, 3)); 
     }, 
     type: "string", 
     role: "annotation" 
     } 
    ]; 

dataCount 경우, dt.getValue(row, 3)에 대한 모든 참조가 제거 될 것이다. 다행스럽게도 첫 번째 부분을 알았 으면 마지막 함수에서 사용 가능한 모든 행을 계산하는 방법을 알아낼 수 있습니다.

Google 시각화 API를 사용하여 차트를 만드는 데 사용됩니다.

답변

0

myColumnviewColumnDescriptionvar에서 let으로 변경하십시오.

당신이 만약 ... myColumn

*dynamicValue* 교체 아니면 let을 사용하지 않으려면, 당신은 myColumn의 값이 적절한 범위에 저장되어 있는지 확인 클로저를 사용해야합니다 하자 사용하지 않는 - 또는 폐쇄에 넣어하지 마십시오 viewColumnDescription 모든 기능은 let와 값 myColumn = 3

샘플을 볼 것이다 - 경우에만 반드시 필요한 내가 그것을 사용한 적이 있습니다.

var viewColumns = [0]; 
    var count = 0; 
    var dataCount = 3; 
    var total = 0; 
    while (count < dataCount) { 
    let myColumn = count + 1; 
    let viewColumnDescription = { 
     calc: function (dt, row) { 
      return dt.getValue(row, myColumn); 
     }, 
     type: "number", 
     role: "annotation" 
     }; 
    viewColumns.push(myColumn); 
    viewColumns.push(viewColumnDescription); 
    count += 1; 
    } 
+1

SWEET! 고맙습니다!! 나는 vs var에 대해 알지 못해서 더 빨리 자신을 교육하기 위해 검색을 수행했습니다. –

+0

JavaScript로 이해하는 것이 가장 까다로운 일이지만, 일단 올바르게하면 두통을 많이 줄 것입니다. :) –

관련 문제