2014-10-14 4 views
-2

I는 N으로 배열 객체가이 형식으로N 중첩 반복

var test = [obj1, objc2, ..., objN] 

개체있다

{"Key", "number", "Name" : "string", "OtherFields" : "Data"} 

I를 어떻게 달성 할 수있는 본

for (var i = 0; i < test.length; i++) { 
    for (var j = 1; j < test.length; j++) { 
    for (var k = 2; k < test.length; k++) { 
     console.log(test[i].Name + test[j].Name + test[k].Name) 
    } 
    } 
} 

같이 반복 할 배열에있는 n 개의 객체에 대한이 결과는 무엇입니까?

예 :

내가 가진 배열

[1, 2, 3, 4] , [2,4,5], [1,2] 난이 결과를 얻으려면 :

1 2 1 
1 2 2 
1 4 1 
1 4 2 
1 5 1 
1 5 2 
..... 
..... 
4 5 2 

그 배열은 항상 아닌 3 있지만 번호> = 2

+0

나는 당신이 달성하려는 것을 정말로 이해하지 못합니다. 찾고있는 것을 정확하게 보여주는 샘플 입력과 출력을 제공 할 수 있습니까? –

+0

나는 왜 너가 그것을하고 싶은지 이해하지 못한다. 최종 목표는 무엇입니까? – BenM

+0

저는 매번 시작 인덱스가 1 씩 증가하면서 루프를 중첩 유지하려고한다고 생각합니다. 하지만 그가 생각하는 것은 _ 반복적으로 모든 중첩 된 루프가 달성하지 못하는 모든 순열 또는 조합을 생성하는 것입니다. – Max

답변

0

될 수 있습니다 제가 올바르게 이해한다면, 당신은 순열을 원합니다.

function perm(test, max_depth, depth, s){ 
    if(depth === undefined) 
     depth = max_depth; 
    if(s === undefined) 
     s = ''; 
    if(depth == 0) 
     console.log(s); 
    for(var i=depth; i<test.length;i++){ 
     perm(test, max_depth, depth-1, s + test[i].Name); 
    } 
} 
0
var N = 10; 
var n = 3; 

var test = []; 
for (var i = 0; i < N; i++) { 
    test.push({"Name" : "obj" + i}); 
} 

function log_name_combinations(a, n) { 
    function nestedlog(a, maxlvl, lvl, s) { 
     if (lvl < maxlvl) { 
      for (var i = lvl; i < a.length; i++) { 
       nestedlog(a, maxlvl, lvl+1, s + a[i].Name); 
      } 
     } else { 
      console.log(s); 
     } 
    } 

    nestedlog(a, n, 0, ""); 
} 

log_name_combinations(test, n); 

Demo at JsFiddle

PS : 왜 인덱스 번째 i에서 i 번째 수준의 반복을 시작하고 여기에

는 재귀 적 접근 방식인가?