Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to Find Duplicate Values in Arrays?

I am working on SQLite and I have written a query which returns me two arrays ItemsArray and CustomersIDArray as:

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

I want result like that Off White = 2 (count) , Fan = 2 (count) and Delux = 1; and the Resultant Array,

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

Actually I want the count of repetition in first array but the value must not same for CustomerArray. Please help me through logic or code.

like image 875
Amir iDev Avatar asked Apr 23 '12 12:04

Amir iDev


2 Answers

-(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);
}

I just set up -getArrayInfo to test it out. Works fine. As you can see, the array you want to display will be at index:0, and the countArray at index:1.

like image 94
AMayes Avatar answered Oct 12 '22 08:10

AMayes


Use NSCountedSet like below

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);
like image 36
Narayana Avatar answered Oct 12 '22 07:10

Narayana