代码之家  ›  专栏  ›  技术社区  ›  Muju

如何在目标c中连接两个可变数组,如第一个数组的一个元素和第二个数组的第一个元素

  •  0
  • Muju  · 技术社区  · 8 年前

    我是iOS新手。我就是这样做的

    NSMutableArray* arr1 = [NSMutableArray arrayWithObjects: @"A", @"C", @"E", nil];
    NSMutableArray* arr2 = [NSMutableArray arrayWithObjects: @"B", @"D", @"F", nil];
    NSMutableArray* animals = [NSMutableArray arrayWithArray:arr1];
    [animals addObjectsFromArray: arr2];
    

    它给我的输出如下

    EF EF

    任何提示

    4 回复  |  直到 8 年前
        1
  •  0
  •   Pavel Gatilov    8 年前

    只需循环它们

    NSMutableArray* arr1 = [NSMutableArray arrayWithObjects: @"A", @"C", @"E", nil];
    NSMutableArray* arr2 = [NSMutableArray arrayWithObjects: @"B", @"D", @"F", nil];
    NSMutableArray* animals = [NSMutableArray new];
    
    NSUInteger maxCount = arr1.count > arr2.count ? arr1.count : arr2.count;
    for (int i = 0; i < maxCount; i ++) {
        if ([arr1 objectAtIndex:i]) {
            [animals addObject:[arr1 objectAtIndex:i]];
        }
        if ([arr2 objectAtIndex:i]) {
            [animals addObject:[arr2 objectAtIndex:i]]
        }
    }
    

    这适用于所有类型的阵列。

        2
  •  0
  •   user3182143    8 年前

    我现在试过了。我得到了它。检查以下答案。您必须简单地使用sortDescriptor。

    NSMutableArray* arr1 = [NSMutableArray arrayWithObjects: @"A", @"C", @"E", nil];
    NSMutableArray* arr2 = [NSMutableArray arrayWithObjects: @"B", @"D", @"F", nil];
    NSMutableArray* animals = [NSMutableArray arrayWithArray:arr1];
    [animals addObjectsFromArray: arr2];
    
    NSArray *sortedArray = [animals sortedArrayUsingSelector:@selector(localizedCaseInsensitiveCompare:)];
    NSLog(@"The sortedArrays are - %@",sortedArray);
    

    打印的结果是

    The sortedArrays are - (
    A,
    B,
    C,
    D,
    E,
    F
    )
    
        3
  •  0
  •   Anupam Mishra    8 年前

    试试这个-

    NSMutableArray* arr1 = [NSMutableArray arrayWithObjects: @"A", @"C", @"E", nil];
        NSMutableArray* arr2 = [NSMutableArray arrayWithObjects: @"B", @"D", @"F", nil];
        NSUInteger maxCount = arr1.count > arr2.count ? arr1.count : arr2.count;
        NSMutableArray* animals = [[NSMutableArray alloc] init];
    
        for (int i=0; i<maxCount; i++)
        {
            if (i<arr1.count) {
                [animals addObject:[arr1 objectAtIndex:i]];
            }
            if (i<arr2.count) {
                [animals addObject:[arr2 objectAtIndex:i]];
            }
    
        }
    
        4
  •  0
  •   Adithya    8 年前

    添加另一个答案只是为了好玩。

    NSMutableArray* arr1 = [NSMutableArray arrayWithObjects: @"A", @"C", @"E", nil];
    NSMutableArray* arr2 = [NSMutableArray arrayWithObjects: @"B", @"D", @"F", nil];
    NSMutableArray* animals = [NSMutableArray new];
    
    NSInteger minCount;
    NSMutableArray *maxArray;
    
    if (arr1.count < arr2.count) {
        minCount = arr1.count;
        maxArray = arr2;
    }
    else {
        minCount = arr2.count;
        maxArray = arr1;
    }
    
    for (int i = 0; i < minCount; i++) {
        [animals addObject:arr1[i]];
        [animals addObject:arr2[i]];
    }
    
    NSInteger pendingItemsLength;
    if ((pendingItemsLength = maxArray.count - minCount)) {
        [animals addObjectsFromArray:[maxArray subarrayWithRange:NSMakeRange(minCount, pendingItemsLength)]];
    }
    

    这比公认的答案更有效,因为它避免了for循环中的if条件。