ios遍历数组,提取相同元素存入另外一个数组问题。

vincent_pp 发布于 2014/07/09 18:40
阅读 14K+
收藏 0

各位大神,最近工作上面需要前端来处理数据,要求是:在返回的数组中,提取出相同的日期,存入一个数组中,再把提取出有相同元素的数组再存入一个数组中。但是现在遍历完成后,发现打印出来的值没达到预期效果,附上我的代码,和输出的结果,请大神们看看。

代码:

NSMutableArray *dateMutablearray = [@[] mutableCopy];

    NSArray *array1 = @[@"2014-04-01",@"2014-04-02",@"2014-04-03",

                        @"2014-04-01",@"2014-04-02",@"2014-04-03",

                        @"2014-04-01",@"2014-04-02",@"2014-04-03",

                        @"2014-04-01",@"2014-04-02",@"2014-04-03",

                        @"2014-04-01",@"2014-04-02",@"2014-04-03",

                        @"2014-04-01",@"2014-04-02",@"2014-04-03",

                        @"2014-04-04",@"2014-04-06",@"2014-04-08",

                        @"2014-04-05",@"2014-04-07",@"2014-04-09",];

    NSMutableArray *array = [NSMutableArray arrayWithArray:array1];

    for (int i = 0; i < array.count; i ++) {

        NSString *string = array[i];

        NSMutableArray *tempArray = [@[] mutableCopy];

        [tempArray addObject:string];

        for (int j = i+1; j < array.count; j ++) {

            NSString *jstring = array[j];

            NSLog(@"jstring:%@",jstring);

            if([string isEqualToString:jstring]){

                NSLog(@"jvalue = kvalue");

                [tempArray addObject:jstring];

                [array removeObjectAtIndex:j];

            }

        }

        [dateMutablearray addObject:tempArray];

    }

    NSLog(@"array:%@",array);

    NSLog(@"dateMutable:%@",dateMutablearray);

输出效果:

dateMutable:(

        (

        "2014-04-01",

        "2014-04-01",

        "2014-04-01",

        "2014-04-01",

        "2014-04-01",

        "2014-04-01"

    ),

        (

        "2014-04-02",

        "2014-04-02",

        "2014-04-02",

        "2014-04-02",

        "2014-04-02",

        "2014-04-02"

    ),

        (

        "2014-04-03",

        "2014-04-03",

        "2014-04-03",

        "2014-04-03"

    ),

        (

        "2014-04-03",

        "2014-04-03"

    ),

        (

        "2014-04-04"

    ),

        (

        "2014-04-06"

    ),

        (

        "2014-04-08"

    ),

        (

        "2014-04-05"

    ),

        (

        "2014-04-07"

    ),

        (

        "2014-04-09"

    )

)



加载中
0
forksZY
forksZY
解决了吗?我也想这个问题.
0
roy_zhao
roy_zhao

NSMutableArray *dateMutablearray = [@[] mutableCopy];

    

    NSArray *array1 = @[@"2014-04-01",@"2014-04-02",@"2014-04-03",

                        

                        @"2014-04-01",@"2014-04-02",@"2014-04-03",

                        

                        @"2014-04-01",@"2014-04-02",@"2014-04-03",

                        

                        @"2014-04-01",@"2014-04-02",@"2014-04-03",

                        

                        @"2014-04-01",@"2014-04-02",@"2014-04-03",

                        

                        @"2014-04-01",@"2014-04-02",@"2014-04-03",

                        

                        @"2014-04-04",@"2014-04-06",@"2014-04-08",

                        

                        @"2014-04-05",@"2014-04-07",@"2014-04-09",];

    

    NSMutableArray *array = [NSMutableArray arrayWithArray:array1];

    

    for (int i = 0; i < array.count; i ++) {

        

        NSString *string = array[i];  //2014 04 01

        

        NSMutableArray *tempArray = [@[] mutableCopy];

        

        [tempArray addObject:string];

        

        for (int j = i+1; j < array.count; j ++) {

            

            NSString *jstring = array[j];

            

            NSLog(@"jstring:%@",jstring);

            

            if([string isEqualToString:jstring]){

                

                NSLog(@"jvalue = kvalue");

                

                [tempArray addObject:jstring];

                

//                 [array removeObjectAtIndex:j]; //内循环做删除行为 导致总对比次数不完整 此动作应在循环外处理

            }

            

        }


        if ([tempArray count] > 1) {

            [dateMutablearray addObject:tempArray];

            [array removeObjectsInArray:tempArray];

            i -= 1;    //去除重复数据 新数组开始遍历位置不变

        }

        

    }

0
ichampion
ichampion

[array removeObjectAtIndex:j];

后面加上

j=j-1;

试试


返回顶部
顶部