2010-07-06 36 views
2

如何將多個NSArrays組合成一個具有交替值的數組?例如。組合多個NSArrays

陣列中的一個:橙,蘋果,梨

陣列中的兩個:喬木,灌木,花卉

陣3:藍,綠,黃

最終的陣列將需要: 橙色樹,藍色,蘋果,灌木,綠色等

回答

3

假設陣列都具有相同的長度:

NSUInteger numberOfArrays = 3; 
NSUInteger arrayLength = [arrayOne length]; 
NSMutableArray *finalMutableArray = [NSMutableArray arrayWithCapacity:(arrayLength * numberOfArrays)]; 
for (NSUInteger index = 0; index < arrayLength; index++) { 
    [finalMutableArray addObject:[arrayOne objectAtIndex:index]]; 
    [finalMutableArray addObject:[arrayTwo objectAtIndex:index]]; 
    [finalMutableArray addObject:[arrayThree objectAtIndex:index]]; 
} 
NSArray *finalArray = [NSArray arrayWithArray:finalMutableArray]; 

您可能想要測試數組的長度是否相同。您不能將nil添加到NSMutableArrayNSArray。您可以添加一個NSNull佔位符,但最好檢查一下您的輸入。

+0

我增加了一個修復容量值。 – 2010-07-06 23:08:26

3

如果你有數組

NSArray *arrayOfArrays = ...; 
NSMutableArray *oneArray = [NSMutableArray array]; 
for (NSArray *tmpArray in arrayOfArrays) { 
    [oneArray addObjectsFromArray:tmpArray]; 
} 
6

[@[@[@1,@2],@[@3,@4],@[@5,@6]] valueForKeyPath:@"@unionOfArrays.self"]

的數組所以一旦你有陣列的排列你叫unionOfArrays收集運營商。

+0

+1,用於聰明地使用鍵值編碼。如果你走這條路線,你必須確保你的零部件都不是零。 – 2015-06-18 05:14:14