2014-12-16 5 views
0

imagine 저는 두 부분으로 구성된 그리드처럼 탁월합니다.인덱스 배열을 기반으로 변수를 프로그래밍 방식으로 선언합니다 (Google 사이트 목록 페이지 작업)

열과 목록.

열은 열이며,이 목록은 행의 모든 ​​전체 컬렉션이다. .length로 내 열 목록을 가져올 수 있으며 목록의 .length는 나에게 행 수를 제공합니다.

그래서 지금 x와 y가 있습니다.

나는 이런 식으로 뭔가를 작동 것이라고이에서 개체를 만들려면 :

문제는 목록의 길이가 변경 될 수 있다는 점이다. 이 접근 방식을 볼 수있는 유일한 방법은 프로그래밍 방식으로 변수를 만드는 것입니다. 그렇게 (가짜 코드)

//Variables 
    var itemName 

    //Get Column Names 
    for (var j in columns) {         //columns is an object/array 
     var cName =columns[j].getName();      //I have to get the name otherwise cName just returns as ListItem 
     columnList.push(cName);        //Push cName to my own array so I have an array of strings 
    } 
    for (var i in listItems) {        //Again working with an object array 
     item = listItems[i]        //Creating an easier reference variable 
     for (var j = 0; j < columnList.length - 1;j++){  //now I have to use the length of the Column array to find out how wide our list is 
      itemName = item.getValueByName(columnList[j]); //turning the listitem into a string 
      row(i).push(itemName);       //the is the programmatic variable. 
     } 
    } 

문제는 어디에서 변수를 선언 할 것인가가 확실하지 않다는 것입니다. List 배열을 반복하고 listItems 배열의 각 인덱스를 여기 getValueByName (columnList [j])에서 수행중인 열의 인덱스와 일치시키는 다른 방법이 있습니까?

****************************** 편집 *************** *****************

예는 요청 된 나는이 혼란 것이 얼마나 볼 수 있습니다. 이것은 특별히 Google 사이트를 다루고 있습니다.

위의 코드에도 주석을 추가했습니다.

그리드가 있습니다.이 그리드는 실제로 두 부분입니다. 이 열은 왜 다른 배열을 생성하고 배열에 이름을 넣는 지 객체입니다. 목록은 또 다른 객체입니다. (LI = lineItem)

루프를 반복하여 각 행을 자체 배열로 분할 할 수 있어야합니다.

한 번에 하나씩 성공적으로 할 수있었습니다. 그러나 행마다 하나의 배열을 갖고 행의 수가 동적이기 때문에 (사용자가 행을 더 추가 할 수 있기 때문에) 어떻게 설명 할 것인지 혼란 스럽습니다.

I는 전체 격자 열 특성 및 배열되어 열 특성을 갖는 물체로서 존재하고 싶다. 그래서 row0는 row0 [LI1, LI2, LI3, LI4]

Columns[]~~>|Col1|Col2|Col3|Col4| ~~~~~~~| 
row0[]~~~~~>|LI1 |LI2 |LI3 |LI4 | ~~~~~~~| 
row1[]~~~~~>|LI1 |LI2 |LI3 |LI4 | ~~~~~~~|ObjList 
row2[]~~~~~>|LI1 |LI2 |LI3 |LI4 | ~~~~~~~| 

가 다시 그리드의 폭

Column.length 

이며 행수

itemList.length 
의해 정의 될 수있을 것이다

그래서 배열의 배열을 가질 수 있습니까?

그래서

//Variables 
    var itemName; 
    var masterArray = []; 
    var midArray = []; 
    //Get Column Names 
    for (var j in columns) {         
     var cName =columns[j].getName();      
     columnList.push(cName);        
    } 
    for (var i in listItems) {        
     item = listItems[i]         
     for (var j = 0; j < columnList.length - 1;j++){  
      itemName = item.getValueByName(columnList[j]); 
      midArray.push(itemName); 
       if (midArray > columnLisst.length -1) { 
       masterArray.push(midArray); 
       midArray.length = 0; 
       }      
     } 
    } 

그것은 비록 투박하고 잘못된 느낌이있을 수 있습니다.

+0

몇 가지 샘플 데이터로 설명 할 수 있습니까? 귀하의 예를 전혀 이해가 안 : ( – thefourtheye

+0

추가 설명을 추가했습니다. – JForgie

답변

1

예, JavaScript로 2 차원 배열을 가질 수 있습니다. 지금 당신이 가지고있는 것은 배열 인 다른 레벨을 가진 객체입니다. 그래서 차원 측면에서 실제로 차이가 없습니다. 배열이있는 객체이든 다른 객체가있는 객체이든 다른 배열이있는 배열이든 상관 없습니다. 모든 상황에서 당신은 그 두 번째 레벨을 가지고 있습니다.

유일한 문제는 실제로입니다. 인덱스가 아닌 이름으로 값에 액세스 할 수 있기를 원하십니까? 이름으로 값에 액세스하려면 객체를 사용하십시오. 물건 안에 물건이있는 것을 고려 했습니까?

변수를 프로그래밍 방식으로 선언하고 있지 않습니다. 어쩌면 용어에 대한 오해가있을 수 있습니다.

두 번째 수준의 데이터가있는 상황에서는 FOR 개의 루프가 중첩되어있는 것이 정상적이므로 더 복잡해도 클럭이나 잘못된 것으로 간주되지는 않습니다.

코드를 실행하고 결과를보고 무엇이 효과가 있을지 알아야합니다. Logger.log("some text: " + aVariableName); 문을 사용하여 LOG에 정보를 인쇄 한 다음 보기로그을 사용할 수 있습니다. 또한 실행 트랜 스크립트을 확인하십시오.

코드 줄을 한 줄씩 한 줄씩 단계별로 실행하고 결과를 볼 수도 있습니다. 당신은 당신이 알아낼 수 없습니다 특정 문제가있는 경우

는 오류 메시지 및 코드의 어떤 라인 오류 메시지를 생산하고 제공합니다.