oc删除数组中重复model的正确姿势

网上有很多关于这方面的算法文章我见到的最多的就是一下这种形式:

for (NSInteger i = 0; i < self.selectedModelArray.count; i++) {
        for (NSInteger j = i+1;j < self.selectedModelArray.count; j++) {
            AssistantModel *tempModel = self.selectedModelArray[i];
            AssistantModel *model = self.selectedModelArray[j];
            if ([tempModel.assistantId isEqualToString:model.assistantId]) {
                [self.selectedModelArray removeObject:model];
            }
        }
    }

这种方式是不对的,当你数据量足够多时,数据中间重复的model比较多,删除的比较多,self.selectedModelArray.count在减少,此时第二个for循环,的j的值就有可能等于self.selectedModelArray.count,而此时源数组还没有完全便利。
正确的做法用改新建一个数组来存放源数组的数据,删除的时候删除新建数组里面的对象,最后得到的就是没有重复数据的数组了。

 NSMutableArray *dataArr = [NSMutableArray array];
    [dataArr addObjectsFromArray:self.selectedModelArray];
    for (NSInteger i = 0; i < self.selectedModelArray.count; i++) {
        AssistantModel *tempModel = self.selectedModelArray[i];
        for (NSInteger j = i+1;j < self.selectedModelArray.count; j++) {
            AssistantModel *model = self.selectedModelArray[j];
            if ([tempModel.assistantId isEqualToString:model.assistantId]) {
                [dataArr removeObject:model];
            }
        }
    }

最后的dataArr就是最终数组。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容