iOS 去除陣列中重複資料的幾種方法
第一種:利用NSDictionary的AllKeys(AllValues)方法
程式碼:
-
NSArray *dataArray = @[@"2014-04-01",@"2014-04-02",@"2014-04-03",
-
@"2014-04-01",@"2014-04-02",@"2014-04-03",
-
@"2014-04-01",@"2014-04-03",@"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",];
-
NSMutableDictionary *dic = [[NSMutableDictionary alloc]initWithCapacity:0];
-
for(NSString *str in dataArray)
-
{
-
[dic setValue:str forKey:str];
-
}
-
NSLog(@"%@",[dic allKeys]);
列印結果:
( "2014-04-09", "2014-04-02", "2014-04-08", "2014-04-01", "2014-04-07", "2014-04-06", "2014-04-05", "2014-04-04", "2014-04-03" )
第二種方法:利用NSSet的AllObjects方法
例項程式碼:
-
NSArray *dataArray = @[@"2014-04-01",@"2014-04-02",@"2014-04-03",
-
@"2014-04-01",@"2014-04-02",@"2014-04-03",
-
@"2014-04-01",@"2014-04-03",@"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",];
-
NSSet *set = [NSSet setWithArray:dataArray];
-
NSLog(@"%@",[set allObjects]);
列印結果:
( "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" )
第三種方法,利用陣列的containsObject來去除
程式碼如下:
-
NSArray *dataArray = @[@"2014-04-01",@"2014-04-02",@"2014-04-03",
-
@"2014-04-01",@"2014-04-02",@"2014-04-03",
-
@"2014-04-01",@"2014-04-03",@"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 *listAry = [[NSMutableArray alloc]init];
-
for (NSString *str in dataArray) {
-
if (![listAry containsObject:str]) {
-
[listAry addObject:str];
-
}
-
}
-
NSLog(@"%@",listAry);
列印結果:
( "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" )
第四種方法:利用keyValue的方式(自己不是太明白)
-
NSArray *dataArray = @[@"2014-04-01",@"2014-04-02",@"2014-04-03",
-
@"2014-04-01",@"2014-04-02",@"2014-04-03",
-
@"2014-04-01",@"2014-04-03",@"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",];
-
dataArray = [dataArray valueForKeyPath:@"@distinctUnionOfObjects.self"];
-
NSLog(@"%@",dataArray);
列印結果如下:
-
(
-
"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"
-
)
總結:這幾種方式都可以實現去除重複的資料,當然也可以用for迴圈的方式去除方法不再敘述;也參考了別人的東西進行的總結