7

I have one NSMutableArray which containing duplicates value e.g.[1,2,3,1,1,6]. I want to remove duplicates value and want new array with distinct values.

4

6 Answers 6

18

two liner

NSMutableArray *uniqueArray = [NSMutableArray array];

[uniqueArray addObjectsFromArray:[[NSSet setWithArray:duplicateArray] allObjects]];
Sign up to request clarification or add additional context in comments.

1 Comment

And use NSOrderedSet if you want the original order.
3

My solution:

array1=[NSMutableArray arrayWithObjects:@"1",@"2",@"2",@"3",@"3",@"3",@"2",@"5",@"6",@"6",nil];
array2=[[NSMutableArray alloc]init];
for (id obj in array1) 
{
    if (![array2 containsObject:obj]) 
    {
        [array2 addObject: obj];
    }
}
NSLog(@"new array is %@",array2);

The output is: 1,2,3,5,6..... Hope it's help you. :)

1 Comment

hi can you tell me can i count no of duplicate element in array1 like 2 is coming in thrice time.
2

I've made a category on NSArray with this method in :

- (NSArray *)arrayWithUniqueObjects {
    NSMutableArray *newArray = [NSMutableArray arrayWithCapacity:[self count]];

    for (id item in self)
        if (NO == [newArray containsObject:item])
            [newArray addObject:item];

    return [NSArray arrayWithArray:newArray];
}

However, this is brute force and not very efficient, there's probably a better approach.

Comments

0

If the order of the values is not important, the easiest way is to create a set from the array:

NSSet *set = [NSSet setWithArray:myArray];

It will only contain unique objects:

If the same object appears more than once in array, it is added only once to the returned set.

Comments

0

If you are worried about the order, check this solution

// iOS 5.0 and later
NSArray * newArray = [[NSOrderedSet orderedSetWithArray:oldArray] array];

Comments

0

NSSet approach is the best if you're not worried about the order of the objects

 uniquearray = [[NSSet setWithArray:yourarray] allObjects];

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.