2012-11-03 2 views
2

Google 스프레드 시트에 응용 프로그램 스크립트를 사용하여 2D 배열 질문이 있습니다.2d subarray index Google 스크립트

코드를 가장 빨리 만들 수 있다는 것을 알고 있습니다. 가능한 한 get 및 set 기능을 사용하도록되어 있습니다. 그래서 전체 시트를 먼저 2D 배열로 읽어 들이고 그 중 일부를 참조하려고합니다. 단 두 번째 배열을 참조하는 방법을 모르겠다.

여기까지 내가 한 것입니다.

var ss = SpreadsheetApp.getActiveSpreadsheet() 
var COMPANYIOSheet=ss.getSheetByName("Sheet1"); 
var IO_array= COMPANYIOSheet.getRange("A1:c10").getValues(); 

내가 좋아하는 뭔가를하고 싶지 :

var subarray=IO_array[3:5][1]; 

을하지만 작동하지 않습니다. 나는 단지 하나의 포인트 즉, 참조 할 수 있습니다 :

var subarray=IO_array[3][1]; 

어떻게 2 차원 배열로 분할합니까?

감사합니다.

답변

3

:


편집 : 여기 배열에서 2 차원 하위 ​​배열을 반환하는 일반적인 방법은 방탄복의 추가에 추가하고, 귀하의 코멘트에 회신하는 것입니다 대답, 귀하의 예제에서 IO_array[0] 행 1, IO_array[1] 행 2 등 ..., 각각 1 차원 배열되는. '행'은 관리하기가 쉽습니다. 아담은 당신이 반복해야합니다 제안 컬럼에 관해서는

는, 여기 가능한 예이다 : 모두 답변을 기대하는 것은 충분히 명확하게됩니다

var col = new Array() 
for(i=0;i<IO_array.length;++i){ 
    col.push(IO_array[i][0] ;// taking index 0 means I'll get column A of each row and put it in the new array 
} 

)

+0

와우. 그렇게 쉬운 행동을하기에는 너무 복잡합니다. 하위 3x3 배열을 IO_array 밖으로 만들고 싶다면 어떻게해야합니까? 그걸 좀 도와 주시겠습니까? Serge 감사합니다. – jason

3

어떻게 보조 2D 배열로 분할합니까?

slice()을 사용함으로써. ;-)

var subarray=IO_array.slice(2, 5); 

subarray[i][1]을 참조 할 수 있습니다. "두 번째 열"로만 새 배열을 만들어야하는 경우 몇 가지 반복을 사용해야합니다. 아담의 보완으로

function slice2d(array, rowIndex, colIndex, numRows, numCols) { 
    var result = []; 
    for (var i = rowIndex; i < (rowIndex + numRows); i++) { 
    result.push(array[i].slice(colIndex, colIndex + numCols)); 
    } 
    return result; 
} 
+0

안녕 아담이 무엇을이다 나는 '긍정적 인 협동'이라고 부를 것입니다 .- 감사와 +1은 "보완 할 보완"입니다! –