如何让一个数组中的字典,如果字典中有重复的id.将重复的id的字典进行数组整合...。

需求,
有一个数组, 数组里面存放着字典, 我想让这个数组中的所有字典中的,"id"这个key不相同的字典加入到一个新的数组中, 相同的我要进行数量整合,然后合并成一个字典放入到新的数组中, 大致数据结构如下
例如:

NSArray *shopList = @[
                      @{@"id" : @"DDS434313", @"name": @"可乐", @"num" : @"5", @"inventory" : @"400"},
                      @{@"id" : @"OOYU23423", @"name": @"雪碧", @"num" : @"9", @"inventory" : @"300"},
                      @{@"id" : @"PW0973434", @"name": @"咖啡", @"num" : @"1", @"inventory" : @"80"},
                      @{@"id" : @"9JLHG2323", @"name": @"橙汁", @"num" : @"11", @"inventory" : @"200"},
                      @{@"id" : @"JLJLYOYO1", @"name": @"王老吉", @"num" : @"7", @"inventory" : @"150"},
                      @{@"id" : @"DDS434313", @"name": @"可乐", @"num" : @"7", @"inventory" : @"320"}
                      ];
                      

其中数组有两个包含可乐的字典, 我想通过id将两个字典的数据整合成一个字典, 加上其他不含重复的字典合并成一个新的数组.请问这个算法, 该怎么写呢 , 最好贴代码 , 非常感谢.

阅读 9.2k
4 个回答

100块我给你写,不能更少了。

  • (NSMutableArray )arrmodel:(NSMutableArray )array{

    NSMutableArray *resrarray = [[NSMutableArray alloc]init];
    resrarray = [NSMutableArray array];
    [resrarray addObject:array[0]];
    [array removeObjectAtIndex:0];
    for (NSDictionary *dic in array) {

    NSInteger index = 0;
    for (NSDictionary *dicv in resrarray) {
        if (dic[@"goods"][@"id"] == dicv[@"goods"][@"id"]) {
            NSMutableDictionary *dics = [NSMutableDictionary dictionary];
            [dics setDictionary:dicv];
            NSInteger number = [dics[@"num"] integerValue] + 1;
            [dics setValue:[NSString stringWithFormat:@"%ld",number] forKey:@"num"];
            
            [resrarray replaceObjectAtIndex:index withObject:dics];
        }else{
            [resrarray addObject:dicv];
        }
        index++;
    }

    }
    return resrarray;

}
把数组换成模型就好了,我也是刚好要做这个

新手上路,请多包涵

//来得比较晚 你如果还没有解决 可以用

NSMutableDictionary *dictionary = [NSMutableDictionary dictionary];
for (NSInteger i = 0; i < shopList.count; i++) {
    NSDictionary *dic = shopList[i];
    [dictionary setValue:dic forKey:dic[@"id"]];
}
NSLog(@"%@",[dictionary allValues]);
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
宣传栏