在我们日常开发中有时候会有数组去重的需求,例如:返回十几个月份,我们需要去重后看返回数据都有几个月份!这是我们需要数组去重来实现这个功能!之前在开发中都是网上搜来直接用,现在有时间来总结一下:
一、NSSet实现数组去重
NSArray *originalArr = @[@1, @9, @4, @3, @1, @3];
NSSet *set = [NSSet setWithArray:originalArr];
NSArray *resultArr = [set allObjects];
NSLog(@"去重后结果: %@",resultArr );
二、利用NSDictionary的AllKeys(AllValues)方法
NSArray *originalArr = @[@1, @9, @4, @3, @1, @3];
NSMutableDictionary *mutableDic = [NSMutableDictionary dictionary];
for (NSNumber *number in originalArr) {
[mutableDic setObject:number forKey:number];
}
NSArray *resultArr = [mutableDic allKeys];
NSLog(@"去重后结果: %@",resultArr);
三、判断是否存在,若不存在则添加到数组中,得到最终结果的顺序不发生变化
NSArray *originalArr = @[@1, @9, @4, @3, @1, @3];
NSMutableArray *resultArr = [NSMutableArray array];
for (NSString *string in originalArr) {
if (![resultArr containsObject:string]) {
[resultArr addObject:string];
}
}
NSLog(@"去重后结果: %@",resultArr);
四、通过valueForKeyPath去重(原理不懂)
NSArray *originalArr = @[@1, @9, @4, @3, @1, @3];
NSArray *result = [originalArr valueForKeyPath:@"@distinctUnionOfObjects.self"];