迭代嵌套数组以获取每个数组的第一个对象,然后是第二个等

时间:2014-09-23 14:51:15

标签: objective-c arrays loops

我已嵌套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]

我最初考虑使用嵌套的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++;
   }

最有效的方法是什么?

2 个答案:

答案 0 :(得分: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;
}

答案 1 :(得分: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