如何在数组中查找重复值?

我正在研究SQLite,我编写了一个查询,它返回两个数组ItemsArray和CustomersIDArray:

ItemsArray Element at Index 0 = Off White, Element at Index 1 = Fan, Element at Index 2 = Off White, Element at Index 3 = Delux, Element at Index 4 = Fan CustomerIDArray Element at Index 0 = 1, Element at Index 1 = 2, Element at Index 2 = 2, Element at Index 3 = 3, Element at Index 4 = 4 

我希望结果像Off White = 2(计数),Fan = 2(计数)和Delux = 1; 和结果数组,

 Result Array Element at Index 0 = Off White, Element at Index 1 = Fan, Element at Index 2 = Delux 

实际上我想要在第一个数组中重复计数,但CustomerArray的值必须不相同。 请帮我完成逻辑或代码。

 -(NSMutableArray *)getCountAndRemoveMultiples:(NSMutableArray *)array{ NSMutableArray *newArray = [[NSMutableArray alloc]initWithArray:(NSArray *)array]; NSMutableArray *countArray = [NSMutableArray new]; int countInt = 1; for (int i = 0; i < newArray.count; ++i) { NSString *string = [newArray objectAtIndex:i]; for (int j = i+1; j < newArray.count; ++j) { if ([string isEqualToString:[newArray objectAtIndex:j]]) { [newArray removeObjectAtIndex:j]; countInt++; } } [countArray addObject:[NSNumber numberWithInt:countInt]]; countInt = 1; } NSMutableArray *finalArray = [[NSMutableArray alloc] initWithObjects:newArray, countArray, nil]; NSLog(@"%@", finalArray); return finalArray; } - (IBAction)getArrayInfo:(id)sender { NSMutableArray *myArray = [[NSMutableArray alloc] initWithObjects:@"Off White", @"Fan", @"Off White", @"Deluxe", @"Fan", nil]; NSMutableArray *godArray = [self getCountAndRemoveMultiples:myArray]; NSLog(@"Array from this end = %@", godArray); } 

我只是设置-getArrayInfo来测试它。 工作正常。 如您所见,要显示的数组将位于index:0,而indexArray位于index:1。

使用NSCountedSet如下所示

 NSMutableArray *ary_res = [[NSMutableArray alloc] init]; NSMutableArray *array = [[NSMutableArray alloc] initWithObjects:@"11",@"13",@"34",@"9",@"13",@"34",@"9",@"2",nil]; NSCountedSet *set = [[NSCountedSet alloc] initWithArray:array]; for(id name in set) { if([set countForObject:name]==2) [ary_res addObject:name]; } // NSLog(@"%@",ary_res); 

尝试这个:

 NSArray *copy = [ItemsArray copy]; NSInteger index = [copy count] - 1; for (id object in [copy reverseObjectEnumerator]) { if ([ItemsArray indexOfObject:object inRange:NSMakeRange(0, index)] != NSNotFound) { [ItemsArray removeObjectAtIndex:index]; } index--; }