2014-09-23 145 views
0

我有嵌套Arrays迭代通過嵌套陣列抓住每個陣列,則第二的第一個目的,等等

例如:

[[1,2,3,4,5], [A,B,C,d,E],[Z,Y,X,W,V]

我想通過這個數組進行迭代,並創建一個新的數組,看起來像這樣:

[ 1,A,Z,2,B,Y,3,C,X,4,D,W,5,E,V]

I wa ŝ最初考慮使用嵌套循環For的,例如:

int index = 0; 
    int stop = [[arrays objectAtIndex:0] count]; 
    NSMutableArray* finalArray = [NSMutableArray new]; 
    while(index < stop) 
    { 
     for(id array in images) 
     { 
     [finalArray addObject:[array objectAtIndex:index]]; 
     } 
     index++; 
    } 

什麼是這樣做的最有效的方法是什麼?

回答

1

我不相信你的代碼會真正產生你的意思(它不會實際編譯,因爲NSArray沒有addObject:)。你想要的是拉鍊:

NSArray *Zip(NSArray *arrays) { 
    if ([arrays count] == 0) { 
    return @[]; 
    } 

    NSMutableArray *result = [NSMutableArray new]; 

    NSInteger minCount = NSIntegerMax; 
    for (NSArray *array in arrays) { 
    minCount = MIN(minCount, [array count]); 
    } 

    for (NSInteger i = 0; i < minCount; i++) { 
    for (NSArray *array in arrays) { 
     [result addObject:array[i]]; 
    } 
    } 

    return result; 
} 
+0

我喜歡閔檢查,好主意。我完全忘了使用for循環而不是while循環哈哈。我在最後增加了索引... – 2014-09-23 15:05:08

1

無法評論,因爲我沒有50代表,所以必須作爲答案!

您是否嘗試過使用循環如

Dim i As Integer, j As Integer 
For i = 1 To 5 
For j = 1 To 3 

選擇項目i從陣列j

Next j 
Next i 
+0

這裏有更多的代表upvote! 我不熟悉Next,哪個對象包含該方法? – 2014-09-23 15:07:28

+1

您不需要「下一個」對象,這是循環的一部分。我不確定中間線,這就是爲什麼我沒有將它包含在代碼中,我沒有使用數組,但大概你可以將它應用到你的方法? *還添加了我錯過的昏暗指示* – DannyBland 2014-09-23 15:09:49

+0

您正在使用哪種語言? – 2014-09-23 15:12:07