2012-10-26 3 views
0

컬렉션은 다음과 같이 11 개 항목을 반환합니다.올바른 배열 구조를 만들려면

(1, "Ball", "Result1") 
    (2, "Ball", " Result2") 
    (3, "Ball", " Result3") 
    (4, "Ball", " Result4") 
    (5, "Ball", " Result5") 
    (6, "Ball", " Result6") 
    (7, "Ball", " Result7") 
    (8, "Ball", " Result8") 
    (9, "Pool", " Pool 1") 
    (10, "Pool", " Pool 2") 
    (11, "Pool", " Pool 3") 

내가 네 항목으로, 그룹을 보관하려면 ... 내 배열 내가 for 루프를 쓸 수있는 방법이

var data = []; 
        data.push({ 
        myclass: "First4", 
        schedule: [ { 
         id : '1', 
         gameType: 'Ball', 

         result: 'Result11' 
        }, { 
         id: '2', 
         gameType: 'Ball', 

         result: 'Result2' 

        },........... ] 



       }); 
            //second group 
       data.push({ 
        divClass : "second4", 
        items : [ { 
         id : '5' 
         gameType: 'Ball', 
         result: 'Result5' 
        }, { 
         id : '' 
         gameType: 'Ball', 
         result: 'Result6 

        } ] 
       }); 

처럼 보이는 것을 나는 같은 결과를 동적으로 달성 할 수 있도록 있도록 대신 푸시 수동

for(var i = 0; i < collLength; i++){ 
// do push 1 with first four //data.push(class, sheculde first 4 items, result) 
// do second push with second four 
// do third push with the remaining 

    } 
+0

"first4", "second4"등으로 이름을 지정 하시겠습니까? 동적으로 배열 인덱스 인 "group0", "group1"등으로 클래스를 분류하는 것이 더 간단 해 보입니다.이 번호는 배열 인덱스에서옵니다. –

+0

...하지만 루프의 경우 'i ++'를 'i + = 4'로 변경 한 다음 'i', 'i + 1', 'i + 2', 'i + 3'항목을 고리. –

+0

나는 단지 내 질문을 분명히하려고 노력했다. 내가해야 할 일은 x 개의 항목을 받았을 때이다.이 경우에는 11 개, x 개의 그룹 (이 경우 3)을 갖고 싶다. 각 그룹 최대 4 개의 항목을 보유합니다. 난 그냥 동적으로 할 루프에 대한 권리를 쓸 수 없었다 ... – myTD

답변

1
var data = []; 

for(var i = 0; i < collLength; i+=4) { 
    data.push({ 
     divClass: "group" + (i/4), 
     items: collection.slice(i, i + 4).map(function(item) { 
      return {id:item[0], gameType:item[1], result:item[2]}; 
     }) 
    }); 
} 
+0

다음은 데모입니다. http://jsfiddle.net/N4hS3/ –

+0

고맙습니다 ...... ...... jsfiddle 예제도 있습니다 .. – myTD

+0

당신은 천만에요. –

0
var indata = [...]; // this is filled with your list of objects. 
var outdata = [ ]; 

var n = indata.length; 

for (var i = 0; i < n; i += 4) 
{ 
    outdata.push({ 
     class: 'group' + outdata.length, 
     items: indata.slice(i, i + 4) 
    }); 
} 
0
를 작성
0

여기에 .reduce()을 사용하는 방법입니다.

var data = collection.reduce(function(arr, obj, i) { 
    return i % 4 ? arr : 
        arr.concat({ 
         divClass: "group" + (i/4), 
         items: collection.slice(i, i + 4).map(function(item) { 
          return {id:item[0], gameType:item[1], result:item[2]}; 
         }) 
        }); 
}, []); 
+0

데모 : http://jsfiddle.net/N4hS3/1/ –

관련 문제