2012-07-08 9 views
0

This에 매핑하면 은행 객체 [a] [b]에 의해 객체 ("클립")에 액세스 할 수있는 객체의 2 차원 배열을 만들 수 있습니다. 여기서 [a]는 "은행"이고 [b]는 "클립"이었습니다. 불행히도이 코드는 일부 외부 파일을보고 해당 속성을 볼 수 있도록 완벽하게 작동합니다. 이러한 파일은 이미 속성 중 일부를 기반으로 "배열"로 구성되어 있습니다. 원래는 이것이 8x8 배열이라고 들었지만, 지금은 16x32 배열이고 요구 사항은 배열에서 4x2 선택으로 구성된 뱅크를 지정합니다. 환언 외부 2 차원 배열을 다른 2 차원 배열 (자바 스크립트)

, I 반복적 "클립"64x8의 2 차원 배열을 생성하지만, 그 클립의 상기 속성을 설정 동시에 같이 필요
banks[0][0].track = 0 
banks[0][0].slot = 0 
banks[0][3].track = 3 

banks[0][3].slot = 0 
banks[0][4].track = 0 
banks[0][4].slot = 1 

banks[0][7].track = 3 
banks[0][7].slot = 1 
banks[15][0].track = 0 

banks[15][0].slot = 31 
banks[15][3].track = 3 
banks[15][3].slot = 31 

banks[16][0].track = 3 
banks[16][0].slot = 0 
banks[16][4].track = 3 

banks[16][4].slot = 1 
banks[63][0].track = 11 
banks[63][0].slot = 30 

banks[63][4].track = 11 
banks[63][4].slot = 31 

. 관련 수학이 클립 객체에 속하는 것은 분명합니다. 그러나 나는 아직 수학을 볼 수 없다. 어떤 제안이라도 대단히 감사하겠습니다. 이 필요한 것처럼

+0

'banks [a] [b]'그 자체가 "클립"이라면'banks [a] [b]'가'clip' 속성을 갖는 이유는 무엇입니까? 또한, 여기에있는 예제는'clip' 속성을 가지고 있는데 왜 당신이 링크 한 샘플 코드는 그렇지 않습니까? 또한 그것은 당신의 질문이 무엇인지 정확히 (적어도 나에게는) 명확하지 않습니다. –

+0

제안 사항을 준수하도록 편집 됨 – jamesson

답변

0

는 소리 :

var theirBanks = [[...], [...], ...]; // 16*32 array of Clip objects 

var x = 2; // reduce outer array to one of half length 
var y = 4; // reduce inner arrays to one of fourth length 
function reduce(sel) { 
/* gets: a 2*4 selection of clips from theirBanks 
returns: a new clip for banks */ 
    ... // not sure how you want this to be done 
} 

var banks = new Array(theirBanks.length/x); 
for (var i=0; i<banks.length; i++) { 
    banks[i] = []; 
    for (var j=0; j<theirBanks.length/y; j++) { 
     var selection = []; 
     for (var k=i*x; k<(i+1)*x; k++) 
      selection.push(theirBanks[k].slice(j*y, (j+1)*y)); 

     banks[i][j] = reduce(selection); 
    } 
} 
// banks is now a 8*8 array 

스크립트는의 (이차원) 배열에서 2 * 4 선택을 기반으로 새로운 개체로 줄일 수 있습니다 새로운 작은 (2 차원을 반환 차원) 배열.